2015-06-22 60 views
1

我一直在研究一個Arduino項目。直到最近,我的所有內容都位於一個.ino文件中。我決定重構我的代碼並將我的類移到他們自己的文件中。Arduino頭文件「沒有匹配的調用函數」

我的問題是,當我將我的傳感器類複製到.h文件幷包含它時,我的程序無法編譯,並且出現以下錯誤。

如果我將它複製回.ino文件,然後再次完美工作。

In file included from GardenSensor.ino:1:0: 
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h: At global scope: 
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:8:14: error: expected ')' before 'sensorType' 
    Sensor(byte sensorType, byte sensorID) : _sensorType(sensorType), _sensorID(sensorID) {} 
      ^
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:14:2: error: 'byte' does not name a type 
    byte sensorID() { return _sensorID; } 
^
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:15:2: error: 'byte' does not name a type 
    byte sensorType() { return _sensorType; } 
^
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:18:2: error: 'byte' does not name a type 
    byte _sensorType; 
^
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:19:2: error: 'byte' does not name a type 
    byte _sensorID; 
^
GardenSensor.ino: In constructor 'AnalogSensor::AnalogSensor(byte, byte, byte)': 
GardenSensor.ino:5:103: error: no matching function for call to 'Sensor::Sensor(byte&, byte&)' 
GardenSensor.ino:5:103: note: candidates are: 
In file included from GardenSensor.ino:1:0: 
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:6:7: note: Sensor::Sensor() 
class Sensor { 
    ^
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:6:7: note: candidate expects 0 arguments, 2 provided 
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:6:7: note: Sensor::Sensor(const Sensor&) 
C:\Users\Brenton\AppData\Local\Temp\build5441194172372520295.tmp\Sensor.h:6:7: note: candidate expects 1 argument, 2 provided 
GardenSensor.ino: In constructor 'SensorArray::SensorArray(unsigned int)': 
GardenSensor.ino:16:35: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default] 
GardenSensor.ino: In function 'void printAllSensors()': 
GardenSensor.ino:61:29: error: 'class Sensor' has no member named 'sensorID' 
GardenSensor.ino:66:30: error: 'class Sensor' has no member named 'sensorID' 
no matching function for call to 'Sensor::Sensor(byte&, byte&)' 

我的傳感器類

class Sensor { 
public: 
    Sensor(byte sensorType, byte sensorID) : _sensorType(sensorType), _sensorID(sensorID) {} 

    virtual ~Sensor() {} 

    virtual unsigned int getReading() = 0; 

    byte sensorID() { return _sensorID; } 
    byte sensorType() { return _sensorType; } 

private: 
    byte _sensorType; 
    byte _sensorID; 
}; 

謝謝

+0

「byte」的定義在哪裏? –

+0

根據官方文檔,它是Arduino環境中包含的類型之一。 http://www.arduino.cc/en/Reference/HomePage 使用此類型的其他類沒有相同的問題。 –

回答

0

#include <Arduino.h>在外部代碼文件。