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=新圆();因此调用无参数构造函数。如果您只使用您定义的构造函数,那么就不会有错误;