从外部类创建成员

时间:2014-11-21 09:32:57

标签: c++

我基本上是在尝试初始化一个外部类,以便在我的所有方法中使用它作为成员。

我尝试了什么:

  • 初始化头文件中的成员(错误: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();
    }
}

如果有人能够解释我如何以及为什么会实现这一目标,那就太好了。

1 个答案:

答案 0 :(得分:0)

第一种方法只有在编译器支持C ++ 11类内初始化时才有效;并且您需要使用={}对其进行初始化,因为使用()初始化看起来太像函数声明了:

IRrecv irrecv{RECV_PIN_1};  // or
IRrecv irrecv = IRecv(RECV_PIN_1);

第二种方法应该没问题;我不知道为什么它可能在您的方法中不可用,只要您在类定义中声明它(没有初始化)

IRecv irrecv;

并在构造函数

中初始化它
Receiver::Receiver() : irrecv(RECV_PIN_1) {
    // [..]
}