我遇到了一个我根本无法理解的奇怪的运行时错误。 我正在制作我的类 Circle 的对象,它具有以下默认构造函数:
Circle::Circle()
{
this->radius = 0;
this->center->setX(0);
this->center->setY(0);
}
正在初始化的变量是:
private:
double radius;
Point *center;
};
当我尝试创建类圈的对象时,出现运行时错误。现在我只在动态声明 Point 对象时收到此错误。 我的语法有什么问题吗? 当我像这样在我的 Circle 类中声明 Point 时:
Point center;
然后像这样初始化它:
Circle::Circle()
{
this->radius = 0;
this->center.setX(0);
this->center.setY(0);
}
它有效。 为什么在动态创建对象时会出现这些错误?我不能像第一个例子那样使用两个“->”吗?
这是我的第一篇文章,我希望这不是一个太愚蠢的问题。 提前致谢。
最佳答案
你应该更好地使用
Circle {
private:
double radius;
Point center; // <<<<<<< No pointer here
};
你不需要指针。
您当前代码的问题是没有为您的指针变量分配内存。我也不建议这样做(例如使用 center = new Point()
)。如前所述,这不是必需的。
此外,您不需要 this->
来访问类成员。只需在构造函数中使用成员初始化列表:
Circle::Circle() : radius(0), center(0,0) {
}
关于c++ - 在另一个类 C++ 中创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35138010/