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};
};

谢谢,这就解决了问题。我选择直接指定它,代码更干净,我的
恒温器的初始化功能看起来更干净。非常感谢。谢谢,这就解决了问题。我选择直接指定它,代码更干净,我的
恒温器的初始化功能看起来更干净。非常感谢你。