arduino - 无法实例化我自己的类:没有用于调用“DHT::DHT()”的匹配函数
问题描述
我正在编写一个Arduino项目并尝试将我自己的类包装在 DHT(传感器)库(https://github.com/adafruit/DHT-sensor-library/blob/master/examples/DHT_Unified_Sensor/DHT_Unified_Sensor.ino或那个https://github.com/adafruit/DHT-sensor-library/blob/master/examples/DHTtester/DHTtester.ino)。
我想用函数抽象我自己的库,并用它来学习 C++。
但是当我尝试实例化自己的类时遇到问题:
lib/Hythe/Hythe.cpp: In constructor 'Hythe::Hythe(uint8_t, uint8_t)':
lib/Hythe/Hythe.cpp:3:47: error: no matching function for call to 'DHT::DHT()'
Hythe::Hythe(uint8_t dht_pin, uint8_t dht_type)
有人可以告诉我如何在我自己的类中声明、实例化和调用 DHT 类吗? 当我实施 DHT
主文件
#include "Hythe.h"
Hythe hythe(HYTHE_PIN, HYTHE_TYPE); // here I instantiate the sensor.
void setup()
{
hythe.getSensorInfo();
}
海思
#include "SPI.h"
#include "Wire.h"
#include <DHT.h>
class Hythe
{
private:
float temperature;
float humidity;
uint32_t delayMS;
public:
Hythe(uint8_t, uint8_t); // init with PIN and TYPE
DHT _dht; // THIS IS CAUSING THE ERROR
// (It's in the header file. I simply wanna declare it and
// call it in the cpp file later).
// When I remove this line I get:
// "error: '_dht' was not declared in this scope"
unsigned char getTemperature(); // read the temperature
void getSensorInfo(); // returns sensor info
};
海思.cpp
#include "Hythe.h"
Hythe::Hythe(uint8_t dht_pin, uint8_t dht_type)
{
Serial.print(dht_pin);
_dht = DHT(dht_pin, dht_type);
}
unsigned char Hythe::getTemperature()
{
return 0;
}
void Hythe::getSensorInfo()
{
Serial.println(F("------------------------------------"));
Serial.println(F("Temperature Sensor"));
}
解决方案
正如 Vlad 指出的那样,DHT
没有默认构造函数。您想使用初始化列表来避免调用默认构造函数。您可以通过这种方式在初始化列表中直接调用 DHT 的构造函数。
Hythe::Hythe(uint8_t dht_pin, uint8_t dht_type): _dht(dht_pin, dht_type)
{
Serial.print(dht_pin);
}
推荐阅读
- python - 在函数调用中添加要设置的项目?
- node.js - DynamoDB = 为什么我在传递有效值时收到“提供的关键元素与架构不匹配”错误?
- r - 渲染带有旋转的R脚本时如何传递参数?
- angular - 使用 ng-select 插入动态模板
- group-by - 如何创建动态汇总表以包含在 DAX 度量中?
- excel - 设置右页脚
- makefile - Makefile 中没有先决条件的隐式规则
- python - session.query 中的 Sqlalchemy 传递参数
- java - 为什么我的 twitter4j maven 依赖项不包括 TwitterStreamFactory?
- javascript - 在不相关的组件之间共享数据