c++ - 在另一个类 C++ 中创建对象

标签 c++

我遇到了一个我根本无法理解的奇怪的运行时错误。 我正在制作我的类 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/

相关文章:

c++ - Arduino 矩阵数学?

c++ - MySQL C++ 连接器安装

c++ - 定义char和int时指针有什么区别?

c++ - 如何在 win32 C++ 应用程序中为具有 HANDLE 作为成员的类编写复制构造函数?

c++ - 没有括号的 if 语句是否更快?

c++ - 在访问存储在 vector<base*> 中的已知派生类对象时使用 dynamic_cast 或 static_cast 有什么问题?

c++ - 'this' 指针的类型

c++ - 在 C++ 中执行两个阻塞 IO 调用的更轻量级方法

c++ - 如何在 C++ 中以毫秒为单位获取系统时间(不是自纪元以来)?

c++ - 如何在C++中正确实现工厂方法模式