将地址分配给本地指针后,公共对象的变量将消失

The variables of a public object disappear after assigning the address to a local pointer

本文关键字:公共对象 消失 变量 指针 地址 分配      更新时间:2023-10-16

我有一个名为"方位角方位角(..(";。我想把这个对象给另一个称为"的对象;扫描器扫描(方位(";,通过这种方式,扫描对象可以容易地使用方位对象。";扫描仪";将方位角对象的地址保存到指针。scan对象调用类似scan.scanRoom((的函数。方位角对象可以访问,但指定给它的变量无效(值极高(。是什么原因造成的?我该如何解决这个问题?

代码:

main:

Azimuth azimuth(5,6,2000,7);
ScanAngles scan(sensor,azimuth,elevation);

扫描角度:

class ScanAngles
{
private:
Sensor* sensor;
Azimuth *azimuth;
Elevation *elevation;
public:
ScanAngles(Sensor sensor , Azimuth azimuth, Elevation elevation)
{
this->sensor = &sensor;
this->azimuth = &azimuth;
this->elevation = &elevation;
}

函数:

void ScanAngles::getFullScan(int stepWidth, int stepHeight)
{
Serial.print(this->azimuth->getRotation());
}

调试器的一些图片:

主中的值

在函数中调用时的值

感谢您的帮助和时间!

您按值将对象传递到ScanAngles构造函数中,因此对象被复制到临时值中,存储指向这些临时值的指针是未定义的行为。

您应该通过引用传递:

ScanAngles(Sensor& sensor , Azimuth& azimuth, Elevation& elevation)