未定义的引用:调用非pod类的构造函数

时间:2015-08-01 16:26:49

标签: c++ class libraries

我正在创建一个由另外两个类组成的新类。我在构造函数中使用初始化列表。当我调用这个类的构造函数时,我得到以下消息:

InfraRedReceiverVs1838b.cpp:9:对`IRrecv :: IRrecv(int)'的未定义引用 第9行是初始化IRrecv类的行。

我班级的头文件

#include "Arduino.h"
#include "InfraRedReceiverVs1838b.h"
#include "IRremote.h"
#include "IRremoteInt.h"


//Constructor
VS1838B::VS1838B(int pinoReceptorIR)
:_receptorIR (pinoReceptorIR), _bufferSinalRecebido()
{
_pinoInput = pinoReceptorIR;
}

我班级的源文件

#ifndef INFRAREDRECEIVERVS1838B_H
#define INFRAREDRECEIVERVS1838B_H

#include "Arduino.h"
#include "IRremote.h"
#include "IRremoteInt.h"

class VS1838B{

public:
    //Constructor
    VS1838B(int pinoReceptorIR);

    //Atributes
    IRrecv _receptorIR;                   
    decode_results _bufferSinalRecebido;
    int _pinoInput;

};

#endif  /* INFRAREDRECEIVERVS1838B_H */

保留IRrecv类的IRremote.h文件

// main class for receiving IR

class IRrecv
{
public:
  IRrecv(int recvpin);
  void blink13(int blinkflag);
  int decode(decode_results *results);
  void enableIRIn();
  void resume();
private:
  // These are called by decode
  int getRClevel(decode_results *results, int *offset, int *used, int t1);
  long decodeNEC(decode_results *results);
  long decodeSony(decode_results *results);
  long decodeSanyo(decode_results *results);
  long decodeMitsubishi(decode_results *results);
  long decodeRC5(decode_results *results);
  long decodeRC6(decode_results *results);
  long decodePanasonic(decode_results *results);
  long decodeLG(decode_results *results);
  long decodeJVC(decode_results *results);
  long decodeSAMSUNG(decode_results *results);
  long decodeHash(decode_results *results);
  int compare(unsigned int oldval, unsigned int newval);

} 
;

保留IRrecv类的IRremote.cpp文件

    #include "IRremote.h"
    #include "IRremoteInt.h"

    // Provides ISR
    #include <avr/interrupt.h>

IRrecv::IRrecv(int recvpin)
{
  irparams.recvpin = recvpin;
  irparams.blinkflag = 0;
}

我很确定这不是一个包含问题。我的初始化列表有问题吗?提前致谢。

0 个答案:

没有答案