CapacitiveSensor problems
CapacitiveSensor problems
本文关键字:problems CapacitiveSensor 更新时间:2023-10-16
我一直在使用电容按钮为Arduino编写Pong游戏,并且我一直在获得"调用' capacitivessensor:: capacitivessensor()'没有匹配的函数"错误。下面是我一直错误的类的代码:
//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
我知道标准命名约定说常量应该大写,但是它们已经被保留了。而且变量之类的应该是私有的。我很懒。此外,我得到的错误在不同的行,而不是我调用构造函数…我也没有创建CapacitiveSensor类。
我用的是Mac电脑,如果这很重要(我怀疑)。
似乎CapacitiveSensor
类没有定义默认构造函数,因此Input
类不知道如何构造upButton
和downButton
。
一个选项是在Input
构造函数中初始化upButton
和downButton
,传递所需的参数:
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
类,定义一个默认构造函数,并将固定参数传递给超构造函数。我相信这不是你想要的,但无论如何:
class CustomCapacitiveSensor : public CapacitiveSensor {
public:
CustomCapacitiveSensor() {
CapacitiveSensor(1, 2);
}
};
要使用您所展示的代码,CapacitiveSensor类必须同时具有不接受参数的默认构造函数和等号操作符重载(赋值)。这可能不是您想要的,因为它是浪费的,因为它构造了一个临时对象,然后将其赋值给类成员。
要构造成员对象,可以使用以下代码:
Input::Input(byte sPin, byte rPin1, byte rPin2) :
upButton(sPin, rPin1), downButton(sPin, rPin2)
{
...
}
这将直接构造两个对象实例。
相关文章:
- Problems with std::cin.fail()
- QT GStreamer Windows linker problems
- Problems with emscripten (WebAssembly)
- 为什么当我从语句检查中删除"+ mod"时,以下程序给出错误的答案。问题链接:https://www.codechef.com/problems/FFC219B
- Problems with QByteArray::right
- glutPassiveMotionFunc problems
- Problems in using ?: as if statement in C++
- MPI Isend and Irecv problems
- C++: problems with strtok
- OOP Problems C++
- Problems with gethostbyname c++
- Problems with OpenCV warpPerspective
- spoj http://www.spoj.com/problems/JULKA/
- C++/OpenGL - VAO Problems
- Problems with DevPartner
- Problems with SOCI
- Visual C++ GetModuleFileName() Problems
- Visual C++ ShellExecute problems
- 我的系统出错了,程序运行正常,但 submittionhttp://www.spoj.com/problems/NITT
- push_back() problems