关于容器方面的知识不是很懂,请教一下大家!
#include <vector>
#include <iostream>
#include <list>
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;
};
/////////主函数////////////////////////
上面是我写的基类和子类的部分,大家帮我看看有什么错误的地方?
还有就是,请帮我写一个含有vector list typedef的主函数!
容器这部分不是很清楚,想通过这个例子来明白些!
谢谢大家了!!!!
[解决办法]
- C/C++ code
#include <vector> #include <iostream> #include <list> using namespace std; //////////形状类///////////////////// class CShape { public: virtual double GetArea() = 0; }; //////////////圆类/////////////////////// const double g_Pi = 3.1415926; class CCircle : public CShape { public: //你的程序将构造函数作为了私有的了,这样main中将无法创建这个类的实例!!! CCircle() { } CCircle(double r) : m_dRadius(r) { } ~CCircle() { } void SetRadius(double r) { m_dRadius = r; } 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; } virtual double GetArea() { return m_dLength1 * m_dLength2; } protected: double m_dLength1; //边长 double m_dLength2; }; /////////主函数//////////////////////// int main(){ CCircle c(1.0); CRect CR; CR.SetLength(2.0,3.0); vector <double> dvec; dvec.push_back(c.GetArea()); cout << dvec[0]<<endl; list <double> dlist; dlist.push_back(c.GetArea()); dlist.push_back(CR.GetArea()); for(list <double>::iterator lit = dlist.begin(); lit!=dlist.end(); lit++) cout<<*lit<<endl; system("pause");}