c++ - Arduino 头文件 "No matching function for call to"

标签 c++ arduino

我一直在从事 Arduino 项目。直到最近,我才将所有内容都放在一个 .ino 文件中。我决定重组我的代码并将我的类移动到它们自己的文件中。

我的问题是当我将传感器类复制到 .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;
};

谢谢

最佳答案

#include <Arduino.h>在您的外部代码文件中。

关于c++ - Arduino 头文件 "No matching function for call to",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30976409/

相关文章:

arduino - 通过I2C向SSD1306写入数据

c - 如何修复无法从 esp8266 响应读取serial.find ("OK")

c++ - 为什么我可以在头文件中实现类的成员函数?

c++ - 包含函数的 C 宏

c++ - 隐式生成 move 构造函数

c++ - 使用WIC将QImage编码为png?

java - Arduino 与 Java 接口(interface)问题

python - Arduino、python、pyserial 和套接字

c++ - 为什么会抛出 out_of_range 错误?

c++ - 下面的 C++ 代码是做什么的