C++ C++;没有合适的默认构造函数
我知道以前有人问过这个问题,但我在代码中找不到问题。 这是一个相当简单的代码,我已经检查过了,类C++ C++;没有合适的默认构造函数,c++,C++,我知道以前有人问过这个问题,但我在代码中找不到问题。 这是一个相当简单的代码,我已经检查过了,类Point工作得很好(它有一个默认值(0,0)),尽管圆一个不是 class Circle{ public: Circle(Point, double); Circle(const Circle& c); ~Circle(); void setCenter(Point scenter); void setRadius(double sradius);
Point
工作得很好(它有一个默认值(0,0)),尽管圆
一个不是
class Circle{
public:
Circle(Point, double);
Circle(const Circle& c);
~Circle();
void setCenter(Point scenter);
void setRadius(double sradius);
double getSurface();
Point getCenter() const;
double getRadius() const;
void print() const;
private:
Point center;
double radius;
};
Circle::Circle(Point c, double r)
{
r = 1.0;
setCenter(c);
setRadius(r);
}
我做错了什么?只有在没有其他构造函数的情况下才会为您生成默认构造函数。如果除了有参数的构造函数之外,还想有一个默认构造函数(即没有参数),则需要定义它您需要实现一个默认构造函数,这意味着没有任何参数(或参数有默认参数)
Circle()
发布的代码不需要Circle的默认构造函数(您没有)。拥有一个没有默认构造函数的类是很好的,但是不应该在没有特定构造函数的情况下使用它。只有当您实际尝试使用默认构造函数时(如圆圈;
),此处未显示该构造函数,错误是什么,在哪一行?点的定义在哪里?
?您可能希望圆(点,双)
是圆(常数点和双)
,尽管它与问题无关。+1,我还应该补充一点,在您的代码中的某个点,您正试图执行圆foo;或循环foo();或圆*foo=新圆();因此调用无参数构造函数。如果您只使用您定义的构造函数,那么就不会有错误;