[英]Pointer to object created in parameter
我有一个名为Rectangle
的 class ,它包含两个指向 class Point2D
对象的指针。
class Rectangle: public GeoObjekt
{
private:
Point2D* lu;
Point2D* ro;
public:
Rectangle(Point2D lu, Point2D ro);
}
Rectangle::Rectangle(Point2D lu, Point2D ro) {
this->lu = &lu;
this->ro = &ro;
}
要创建此 class 的 object,我调用以下行:
Rectangle rectangle(Point2D(0, 0), Point2D(2, 1));
构造函数工作正常,但是当我尝试访问Point2D* lu;
或Point2D* ro;
,我得到一个访问冲突异常:
在 Rectangle.exe 中的 0xFEDC8589 处引发异常:0xC00005:在 position 0xFEDC8589 处执行时访问冲突。
我用调试器和Point2D* lu;
或Point2D* ro;
与他们最初拥有的价值观完全不同。 它们在离开构造函数后发生变化。
有人可以告诉我我做错了什么吗?
注意:直线Rectangle rectangle(Point2D(0, 0), Point2D(2, 1));
应该保持原样。
将成员lu
和ro
更改为Point2D
而不是Point2D*
。
您在构造函数中提供的Point2D
将在下一行被销毁,因此您的指针最终不会指向任何内容(悬空指针)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.