// @topic T071320 Inheritance demo, vector of CPrimitive*
// @brief CPrimitive, CPrimitiveLine, CPrimitiveCircle, CPrimitiveRectangle
#include <cstdlib>
#include <iostream>
#include <vector>
using namespace std;
class CPrimitive {
public:
virtual void draw() = 0; // pure virtual function
virtual ~CPrimitive() {} // virtual destructor
};//class CPrimitive
class CPrimitiveLine : public CPrimitive {
public:
void draw() {
cout << __FUNCTION__ << "\n";
}
};//class CPrimitiveLine
class CPrimitiveCircle : public CPrimitive {
public:
void draw() {
cout << __FUNCTION__ << "\n";
}
};//class CPrimitiveCircle
class CPrimitiveRectangle : public CPrimitive {
public:
void draw() {
cout << __FUNCTION__ << "\n";
}
};//class CPrimitiveRectangle
void doit()
{
//typedef vector< CPrimitive* > VectorPrimitives;
//VectorPrimitives primitives;
vector< CPrimitive* > primitives;
primitives.push_back( new CPrimitiveLine );
primitives.push_back( new CPrimitiveCircle );
primitives.push_back( new CPrimitiveLine );
primitives.push_back( new CPrimitiveCircle );
primitives.push_back( new CPrimitiveLine );
primitives.push_back( new CPrimitiveRectangle );
primitives.push_back( new CPrimitiveLine );
primitives.push_back( new CPrimitiveRectangle );
for ( CPrimitive* primitive : primitives ) primitive->draw();
for ( CPrimitive* primitive : primitives ) delete primitive;
primitives.clear();
}
int main()
{
doit();
system( "pause" );
}