C++ ((恒温器*)本)——>;恒温器::_dht';没有类类型
我正在尝试创建一个名为C++ ((恒温器*)本)——>;恒温器::_dht';没有类类型,c++,class,arduino,C++,Class,Arduino,我正在尝试创建一个名为automator的Arduino类,它使用DHT库 我想这个错误可能是因为我对\u dht实例的声明和初始化感到困惑 我的目标就是把我的主要草图清理干净,让类恒温器处理与DHT相关的所有事情 这是我的素描: #include "Thermostat.h" void setup() { // put your setup code here, to run once: } void loop() { // put your main code here, t
automator
的Arduino类,它使用DHT
库
我想这个错误可能是因为我对\u dht
实例的声明和初始化感到困惑
我的目标就是把我的主要草图清理干净,让类恒温器处理与DHT相关的所有事情
这是我的素描:
#include "Thermostat.h"
void setup() {
// put your setup code here, to run once:
}
void loop() {
// put your main code here, to run repeatedly:
}
这是我的恒温器.h
文件:
/*
Thermostat.h - Library for smart thermostat
*/
#ifndef Thermostat_h
#define Thermostat_h
#include "Arduino.h"
#include <DHT.h>
class Thermostat {
public:
Thermostat();
void DHTstart();
private:
DHT _dht(uint8_t, uint8_t); //// Initialize DHT sensor for normal 16mhz Arduino
};
// class initialization
Thermostat::Thermostat(){
_dht(7,DHT22);
}
void Thermostat::DHTstart(){
_dht.begin();
}
#endif
它几乎是正确的,但是DHT\u-DHT(uint8\u-t,uint8\u-t)
是方法原型(而不是DHT
实例)。您必须在构造函数初始值设定项列表中初始化此实例:
class恒温器{
公众:
恒温器();
void DHTstart();
私人:
DHT _DHT;///为正常16mhz Arduino初始化DHT传感器
};
//类初始化
恒温器::恒温器()
:_dht(7,DHT22)//使用预期参数构造dht实例
{ ; }
void恒温器::DHTstart(){
_dht.begin();
}
或更简短的版本:
class恒温器{
公众:
恒温器():dht(7,DHT22){;}
void DHTstart(){u dht.begin();}
私人:
DHT_DHT;
};
在这种情况下(DHT类的魔法值),您可以使用c++11特性(自Arduino 1.6.5以来)并直接指定它,因此可以使用默认构造函数:
class恒温器{
公众:
void DHTstart(){u dht.begin();}
私人:
DHT{7,DHT22};
};
几乎正确,但是DHT\u-DHT(uint8\u-t,uint8\u-t)
是方法原型(而不是DHT
实例)。您必须在构造函数初始值设定项列表中初始化此实例:
class恒温器{
公众:
恒温器();
void DHTstart();
私人:
DHT _DHT;///为正常16mhz Arduino初始化DHT传感器
};
//类初始化
恒温器::恒温器()
:_dht(7,DHT22)//使用预期参数构造dht实例
{ ; }
void恒温器::DHTstart(){
_dht.begin();
}
或更简短的版本:
class恒温器{
公众:
恒温器():dht(7,DHT22){;}
void DHTstart(){u dht.begin();}
私人:
DHT_DHT;
};
在这种情况下(DHT类的魔法值),您可以使用c++11特性(自Arduino 1.6.5以来)并直接指定它,因此可以使用默认构造函数:
class恒温器{
公众:
void DHTstart(){u dht.begin();}
私人:
DHT{7,DHT22};
};
谢谢,这就解决了问题。我选择直接指定它,代码更干净,我的恒温器的初始化功能看起来更干净。非常感谢。谢谢,这就解决了问题。我选择直接指定它,代码更干净,我的恒温器的初始化功能看起来更干净。非常感谢你。