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

Accessing Dynamically created object c++

本文关键字:对象 c++ 创建 动态 访问      更新时间:2023-10-16

我用new动态创建了一个传感器对象。但是,当我尝试使用该对象时,传感器的成员似乎未初始化。我已经验证了对象的创建和初始化是否成功。我不认为这个问题是由于全局对象不是静态的,但是,更改它也不能解决问题。

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
}

主.cpp

SensorModule* pModule = NULL;
int main(void)
{
  pModule = new SensorModule();
  pModule->sendCommand();
  ...
  for(;;)
  {}
}
到目前为止

,您的代码似乎还不错,尽管您必须非常小心才能调用 delete。在C++中,通常应使用unique_ptr来确保元素已解除分配。

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