您好,我是下面代码中的编程新手,我想将 class 放入另一个,但显示错误(C++)
Hello, I am new at programming in the code below I wanted to put a class into another but an error shows(C++)
所以我创建了 class Point 并想将其用作 class Circle 中构造函数的参数,但是错误: class 没有默认构造函数“点”出现,我不知道如何解决。代码如下所示:
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);
}
第一个问题是当编译器隐式调用构造函数Circle::Cirlce(Point, int)
时,在执行该ctor的主体之前,数据成员centre
和 radius
是 默认初始化的 。但是由于您为 class Point
提供了 user-defined ctor Point::Point(int, int)
,编译器将不会合成 默认构造函数Point::Point()
。因此,数据成员centre
不能默认初始化。
要解决,您可以使用构造函数初始化列表,如下所示。如下所示的构造函数初始化列表,复制初始化数据成员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);
}
此外,您在 main
.
中有 2 个同名对象 obj
所以我创建了 class Point 并想将其用作 class Circle 中构造函数的参数,但是错误: class 没有默认构造函数“点”出现,我不知道如何解决。代码如下所示:
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);
}
第一个问题是当编译器隐式调用构造函数Circle::Cirlce(Point, int)
时,在执行该ctor的主体之前,数据成员centre
和 radius
是 默认初始化的 。但是由于您为 class Point
提供了 user-defined ctor Point::Point(int, int)
,编译器将不会合成 默认构造函数Point::Point()
。因此,数据成员centre
不能默认初始化。
要解决,您可以使用构造函数初始化列表,如下所示。如下所示的构造函数初始化列表,复制初始化数据成员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);
}
此外,您在 main
.
obj