访问动态创建的对象c ++

时间:2016-02-19 17:57:30

标签: c++ dynamic allocation

我已使用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(;;)
  {}
}

1 个答案:

答案 0 :(得分:0)

到目前为止你的代码似乎很好,尽管你必须非常小心地调用delete。在C ++中,您通常应使用unique_ptr来确保元素已取消分配。

你在调试或发布模式下调试吗?释放模式有时会混淆一些调试符号。您是在构造函数的过程中还是使用其他方法更改加速度?必须有一些东西,因为accel肯定是在这里初始化的。您也可以单步执行构造函数的不同行来检查它。