2015-11-13 55 views
-1

我知道这已经被问过,但是我在代码中找不到问题。 这是一个相当简单的代码,我已经检查和类Point作品完美(它的默认值(0,0)),虽然Circle一个不C++没有合适的默认构造函数

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); 
} 

我在做什么错?

+0

你需要实现一个默认构造函数,意思是没有任何参数(或者参数有默认参数) ...'Circle()' – Praetorian

+0

该代码已发布并不需要Circle的默认构造函数(您没有)。拥有没有默认构造函数的类是完全正确的,但不应该在没有特定构造函数的情况下使用。 – SergeyA

+0

只有当你真的尝试使用缺省构造函数(如'Circle circle;'),这里没有显示 – Kevin

回答

2

如果您没有其他构造函数,则仅为您生成默认构造函数。如果除了带参数的构造函数之外,你还想有一个默认的构造函数(即没有参数),你需要定义它

+0

+1,我还要补充一点,在你的代码中的某个时刻,你正在尝试做Circle foo;或Circle foo();或Circle * foo = new Circle();从而调用无参构造函数。如果您只使用您定义的构造函数,则不会出现错误; – ForeverStudent

相关问题