【发布时间】:2022-01-09 16:20:15
【问题描述】:
这是一个类,该类的变量之一是一个指针,该指针指向由同一类制成的对象。我想引用一个子对象(新点对象),但是当我从主函数调用函数 getChild() 时,它会引发访问冲突读取位置异常。看起来新建一个Point对象是没有问题的,但是函数执行的时候指针(*child)又变回了null。如何防止指针指向 null?
class Point {
private:
double x;
double y;
Point *child;
public:
Point(double a, double b){
x = a;
y = b;
}
Point getChild() {
return *child;
}
void createChild(double a, double b) {
child = new Point(a, b);
}
}
【问题讨论】:
-
你应该包括调用代码
-
你确定你创建一个子点之前你尝试get它?您的类中没有构造函数,因此
child成员最初具有未定义的值。如果您在createChild()创建子对象并正确初始化指针之前尝试访问子对象,则会调用未定义行为,在这种特定情况下会导致访问冲突。 -
请提供minimal reproducible example 证明您的观察结果使您认为“函数执行时指针 (*child) 回到 null”。
-
只是一个小问题:
Point为什么要生孩子?
标签: c++ pointers access-violation