我收到这个恼人的错误,我不知道为什么=(! 这是问题,我解决了它,但我遇到了构造函数的问题。
编写一个程序,定义一个名为Circle的类,其中包含radius(double类型)作为数据成员。提供set和get函数 对于此数据成员。确保用户输入的值是 有效和正确(大于零) 包括函数成员:a。计算和返回圆的直径的函数成员b。计算的函数成员和 返回计算和的圆c.function成员的周长 返回显示全部的圆圈d.function成员的区域 初始化数据的圆圈e.constructor的信息 会员。如果半径无效(即小于零),则将其设置为 零。
我面临的错误:
错误C2512:'Circle':没有合适的默认构造函数
这是我的代码:
#include <iostream>
using namespace std;
class Circle
{
public:
Circle(double);
void setRadius(double);
double getRadius();
void Display();
double Diameter(double);
double Circumference(double);
double Area(double);
private:
double radius;
};
Circle::Circle(double radio)
{
setRadius(radio);
}
void Circle::setRadius(double ra)
{
if (ra < 0)
{
radius = 0;
}
else
radius = ra;
}
double Circle::getRadius()
{
double rado;
cout << "Enter the Radius:\n";
cin >> rado;
setRadius(rado);
return radius;
}
double Circle::Diameter(double rad)
{
return 2*rad;
}
double Circle::Area(double radi)
{
return 3.14 * radi * radi;
}
double Circle::Circumference(double radiu)
{
return 2 * 3.14 * radiu;
}
void Circle::Display()
{
cout << "The Radius of the circle is: \n";
cout << radius;
cout << "\nThe Diameter of the circle is: \n";
cout << Diameter(radius);
cout << "\nThe Circumference of the circle is: \n";
cout << Circumference(radius);
cout << "\nThe Area of the circle is: \n";
cout << Area(radius);
cout << endl;
}
int main()
{
Circle C;
C.getRadius();
C.Display();
return 0;
}
答案 0 :(得分:15)
该行调用不带参数的构造函数(称为默认构造函数):
Circle C;
您定义的唯一构造函数是:
Circle(double);
希望这应该指向正确的方向。
答案 1 :(得分:5)
默认构造函数是没有任何参数的构造函数。通常,它是为您提供的。但是,如果你明确定义任何其他构造函数,那么它不是。所以你必须自己定义,或不使用它。在main中创建对象时使用它,如下所示:
Circle C;
因此,要么定义默认构造函数,要么不使用它。
答案 2 :(得分:3)
好吧,然后添加一个:)
Circle() : radius(0.0) {}
答案 3 :(得分:0)
您应该定义一个没有名为default constructor的参数的构造函数。您可以将相关成员初始化为默认值。
Circle::Circle()
{
radius = 0.0
}