因此,我创建了 Point 类,并希望将其用作 Circle 类中构造函数的参数,但出现错误:没有显示类“Point”的默认构造函数,我不知道如何修复它。代码如下所示:
class Point {
private:
int x, y;
public:
Point(int X, int Y) {
x = X;
y = Y;
}
};
class Circle {
private:
int radius;
Point centre;
public:
Circle(Point q, int r) {
centre = q;
radius = r;
}
};
int main() {
Point obj = Point(3, 4);
Circle obj = Circle(obj, 3);
}
The 第一个问题就是当构造函数Circle::Cirlce(Point, int)
在执行该构造函数的主体之前,由编译器隐式调用,数据成员centre
and radius
are 默认初始化。但既然你已经提供了用户定义的向量 Point::Point(int, int)
上课Point
,编译器不会综合默认构造函数 Point::Point()
。因此,数据成员centre
不能默认初始化。
To solve你可以使用这个构造函数初始值设定项列表如下所示。构造函数初始值设定项列表如下所示,复制初始化数据成员centre
而不是默认初始化它。
class Point {
private:
int x, y;
public:
Point(int X, int Y) {
x = X;
y = Y;
}
};
class Circle {
private:
int radius;
Point centre;
public:
//--------------------------vvvvvvvvvvvvvvvvvvvv--->constructor initializer list used here
Circle(Point q, int r): radius(r), centre(q)
{
}
};
int main() {
Point obj = Point(3, 4);
Circle circleObj(obj,4);
}
Demo https://onlinegdb.com/pAFqht3DJ
此外,您有 2 个同名对象obj
inside main
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)