【问题标题】:defining the init line in a constructor在构造函数中定义初始化行
【发布时间】:2017-11-27 14:06:16
【问题描述】:

在编写我的第一个 C++ 中面向对象的迷你项目时,我定义了两个类,如下所示:

class Point
{
public:
    Point(int x, int y);
    int getX() const;
    int getY() const;
    void setX(int x);
    void setY(int y);
    void print() const;
private:
    int x, y;
};

class Circle
{
public:
    Circle(int x, int y, int r, int color);
    int getColor() const;
    void setColor(int color);
    bool contains(const Point &p) const;
    void print() const;
private:
    const Point center;
    int radius, color;
};

现在,我正在尝试以这种方式定义类 Circle 的构造函数:

Circle::Circle(int x=0,int y=0,int r=0,int color=0)
    :center.x(x)center.y(y),radius(r),color(color)
{  

}

但这似乎是错误的,我不明白为什么以及为什么要修复它。

【问题讨论】:

  • 如果你告诉我们你为什么认为“这似乎是错误的”,会容易很多。尽管这对某些读者来说很明显,但您应该学会在提问时始终包含所有相关信息。

标签: c++ class constructor initialization


【解决方案1】:

数据成员center 的类型为Point。因此,要对其进行初始化,您必须调用 Point 类的适当构造函数。

例如

Circle::Circle(int x=0,int y=0,int r=0,int color=0):center(x, y),radius(r),color(color)
{  

}

另外,为类 Circle 声明一个构造函数也是有意义的

Circle( const Point &center, int r, int color);

【讨论】:

  • @grek40 评论已删除
猜你喜欢
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
相关资源
最近更新 更多