// @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" ); }