我已使用new动态创建了一个Sensor对象。但是,当我尝试使用该对象时,看起来Sensor的成员未初始化。我已经验证了对象的创建和初始化是成功的。我不相信这个问题是由于全局对象不是静态的,但改变它也不能解决问题。
class SensorModule
{
public:
SPI_BUS* spi;
ADX123* accel;
SENSOR* sensor2;
...
public:
SensorModule();
~SensorModule();
public:
sendCommand();
...
}
SensorModule::SensorModule()
{
spi = new SPI_BUS(1,2,3);
accel = new ADX123(spi,4);
sensor2 = new SENSOR(spi,5);
...// more initialization
}
void SensorModule::sendCommand(void){
accel->accelCommand(); // When I debug and stop here, I see that my "this"
// accel pointer are uninitialized
// however, the SensorModule object pointer is
// valid in the heap
}
的main.cpp
SensorModule* pModule = NULL;
int main(void)
{
pModule = new SensorModule();
pModule->sendCommand();
...
for(;;)
{}
}
答案 0 :(得分:0)
到目前为止你的代码似乎很好,尽管你必须非常小心地调用delete。在C ++中,您通常应使用unique_ptr来确保元素已取消分配。
你在调试或发布模式下调试吗?释放模式有时会混淆一些调试符号。您是在构造函数的过程中还是使用其他方法更改加速度?必须有一些东西,因为accel肯定是在这里初始化的。您也可以单步执行构造函数的不同行来检查它。