gpt4 book ai didi

c++ - 电容传感器问题

转载 作者:行者123 更新时间:2023-11-28 03:25:44 24 4
gpt4 key购买 nike

我一直在写一个Pong使用电容式按钮的 Arduino 游戏,我收到“没有匹配函数调用‘CapacitiveSensor::CapacitiveSensor()’”错误。这是我遇到错误的类的代码:

//Input.cpp

#include <CapacitiveSensor.h>
#include "Input.h"
#include "Arduino.h"

Input::Input (byte sPin, byte rPin1, byte rPin2) { //I get the error on this line
upButton = CapacitiveSensor(sPin, rPin1);
downButton = CapacitiveSensor(sPin, rPin2);
}
//Continued for bChk

然后这是标题:

//Input.h

#ifndef Input_H
#define Input_H
#include "Arduino.h"
#include <CapacitiveSensor.h>

class Input{
public:
const static byte up = 0;
const static byte down = 1;
CapacitiveSensor upButton;
CapacitiveSensor downButton;
boolean bChk(byte button);
Input(byte sPin, byte rPin1, byte rPin2);
};

#endif

我知道标准命名约定说常量应该大写,但它们已经被保留了。而且变量等应该是私有(private)的。我很懒。此外,我在与调用构造函数的那一行不同的行上收到错误...我也没有创建 CapacitiveSensor 类。

我在 Mac 上,如果重要(我怀疑)。

最佳答案

看起来 CapacitiveSensor 类没有定义默认构造函数,因此 Input 类不知道如何构造 upButton向下按钮

一个选项是在 Input 构造函数中初始化 upButtondownButton,传递所需的参数:

class Input {
public:
Input(byte sPin, byte rPin1, byte rPin2)
: upButton(CapacitiveSensor(sPin, rPin1))
, downButton(CapacitiveSensor(sPin, rPin2))
{}
CapacitiveSensor upButton;
CapacitiveSensor downButton;
};

另一种选择是将这些成员转换为指针,并使用 new 为它们分配所需的参数。示例:

class Input {
public:
Input() : upButton(NULL), downButton(NULL) {}
void initializeMembers(byte sPin, byte rPin1, byte rPin2) {
upButton = new CapacitiveSensor(sPin, rPin1);
downbutton = new CapacitiveSensor(sPin, rPin2);
}
CapacitiveSensor *upButton;
CapacitiveSensor *downButton;
};

或者最终,您可以扩展 CapacitiveSensor 类,定义默认构造函数,并将固定参数传递给 super 构造函数。我相信这不是您想要的,但无论如何:

class CustomCapacitiveSensor : public CapacitiveSensor {
public:
CustomCapacitiveSensor() {
CapacitiveSensor(1, 2);
}
};

关于c++ - 电容传感器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14077456/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com