一个代码的错误求改正!
#include <iostream>
using namespace std;
//////////形状类/////////////////////
class CShape
{
public:
virtual double GetArea() = 0;
};
//////////////圆类///////////////////////
const double g_Pi = 3.1415926;
class CCircle : public CShape
{
CCircle()
{
}
CCircle(double r) : m_dRadius(r)
{
}
~CCircle()
{
}
void SetRadius(double r)
{
m_dRadius = r;
}
public:
virtual double GetArea()
{
return m_dRadius* m_dRadius * g_Pi;
}
protected:
double m_dRadius;//半径
};
//////////////长方形类//////////////////////
class CRect:public CShape
{
CRect()
{
}
CRect(double a,double b)
{
}
~CRect()
{
}
void SetLength (double a,double b)
{
m_dLength1 = a;
m_dLength2 = b;
}
public:
virtual double GetArea()
{
return m_dLength1 * m_dLength2;
}
protected:
double m_dLength1; //边长
double m_dLength2;
};
/////////主函数////////////////////////
void main()
{
CShape* pCircle = new CCircle(5);
pCircle->GetArea();
delete pCircle;
CRect box(10,5);
box.GetArea();
}
编译时出现这个错误:error C2248: 'CCircle::CCircle' : cannot access private member declared in class 'CCircle'
error C2248: 'CRect::CRect' : cannot access private member declared in class 'CRect'
error C2248: 'CRect::~CRect' : cannot access private member declared in class 'CRec
怎么改正错误啊??????????
[解决办法]
- C/C++ code
#include <iostream> using namespace std; //////////形状类///////////////////// class CShape { public: virtual double GetArea() = 0; }; //////////////圆类/////////////////////// const double g_Pi = 3.1415926; class CCircle : public CShape { public:CCircle() { } CCircle(double r):m_dRadius(r) { } ~CCircle() { } void SetRadius(double r) { m_dRadius = r; } public: virtual double GetArea() { return m_dRadius* m_dRadius * g_Pi; } protected: double m_dRadius; //半径 }; //////////////长方形类////////////////////// class CRect:public CShape { public:CRect() { } CRect(double a,double b) { } ~CRect() { } void SetLength (double a,double b) { m_dLength1 = a; m_dLength2 = b; } public: virtual double GetArea() { return m_dLength1 * m_dLength2; } protected: double m_dLength1; //边长 double m_dLength2; }; /////////主函数//////////////////////// void main() { CCircle* pCircle = new CCircle(5); pCircle->GetArea(); delete pCircle; CRect box(10,5); box.GetArea(); }