我是C ++的新手,在研究构造函数时,我正在尝试代码段。
#include <iostream>
using namespace std;
class CCircle
{
double dRadius;
public:
CCircle(double in_Radius) : dRadius(in_Radius) {}
double area()
{
return (3.14*dRadius*dRadius);
}
};
class CCylinder
{
CCircle CircleObject;
double dheight;
public:
CCylinder(double in_dheight) : dheight(in_dheight) {}
double volume()
{
return (CircleObject.area()*dheight);
}
};
int main()
{
CCircle CircleObject (0.5);
CCylinder CylinderObject (5.2);
cout<<"Area is " << CircleObject.area() <<endl;
cout<<"Volume is " << CylinderObject.volume() <<endl;
}
我在此代码中犯了任何错误吗?如果是,您能告诉我错误吗?我无法找出问题所在
答案 0 :(得分:1)
您正在询问是否存在任何问题,而您的程序甚至无法编译。您应该收到此错误:
main.cpp: In constructor ‘CCylinder::CCylinder(double)’:
main.cpp:29:52: error: no matching function for call to
‘CCircle::CCircle()’
CCylinder(double in_dheight) : dheight(in_dheight) {}
其中提到Circle类没有默认构造函数。这意味着您应该将参数传递给构造函数(in_Radius)。
或者,当然,您可以只为circle提供默认的构造函数,甚至为已经存在的circle构造函数的参数提供默认值。
答案 1 :(得分:0)
您的代码无法正常工作,因为该错误明确表明未定义默认构造函数error: no matching function for call to ‘CCircle::CCircle()’
尝试一下
class CCircle
{
double dRadius;
public:
CCircle() {}
CCircle(double in_Radius) : dRadius(in_Radius) {}
double area()
{
return (3.14*dRadius*dRadius);
}
};
class CCylinder
{
CCircle CircleObject;
double dheight;
public:
CCylinder() {}
CCylinder(double in_dheight) : dheight(in_dheight) {}
double volume()
{
return (CircleObject.area()*dheight);
}
};