我基本上是在尝试初始化一个外部类,以便在我的所有方法中使用它作为成员。
我尝试了什么:
error: 'RECV_PIN_1' is not a type
)这是我缩短的代码:
// Receiver.h
#include "Arduino.h"
#include "IRremote.h"
class Receiver {
public:
Receiver();
void tick();
private:
static const int LED_PIN = 13;
static const int RECV_PIN_1 = 11;
static const int MAX_HEALTH = 1000;
// [..]
IRrecv irrecv(RECV_PIN_1); // this does not work
// [..]
};
// Receiver.cpp
#include "Arduino.h"
#include "IRremote.h"
#include "Receiver.h"
Receiver::Receiver() {
// [..]
}
void Receiver::tick() {
checkHitIndicator();
// if there is a result
if (irrecv.decode(&results)) {
playerHitDetected(10);
// receive the next value
irrecv.resume();
}
}
如果有人能够解释我如何以及为什么会实现这一目标,那就太好了。
答案 0 :(得分:0)
第一种方法只有在编译器支持C ++ 11类内初始化时才有效;并且您需要使用=
或{}
对其进行初始化,因为使用()
初始化看起来太像函数声明了:
IRrecv irrecv{RECV_PIN_1}; // or
IRrecv irrecv = IRecv(RECV_PIN_1);
第二种方法应该没问题;我不知道为什么它可能在您的方法中不可用,只要您在类定义中声明它(没有初始化)
IRecv irrecv;
并在构造函数
中初始化它Receiver::Receiver() : irrecv(RECV_PIN_1) {
// [..]
}