我有一个名为"方位角方位角(..(";。我想把这个对象给另一个称为"的对象;扫描器扫描(方位(";,通过这种方式,扫描对象可以容易地使用方位对象。";扫描仪";将方位角对象的地址保存到指针。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)