Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using namespace std;
- class Base
- {
- public:
- int ClassID; // Used only by derived classes
- string Name;
- shared_ptr<Base> Parent; // For TreeCtrl-like hierarchy
- }
- class DerivedA : public Base
- {
- public:
- double Length;
- double Width;
- double Height;
- }
- class DerivedB: public Base
- {
- public:
- double Radius;
- }
- class Controller
- {
- public:
- vector<shared_ptr<Base>> Objects;
- void CreateObject(int class_id, string name, shared_ptr<Base> parent)
- {
- shared_ptr<Base> temp;
- switch(class_id)
- {
- case DERIVEDA: // enum definition assumed
- temp = make_shared<DerivedA>(name, parent); // constructors assumed
- break;
- case DERIVEDB:
- temp = make_shared<DerivedB>(name, parent);
- break;
- }
- Objects.push_back(temp);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement