class widget { public: Widget(); virtual ~Widget(); virtual void draw(); virtual void update(); }; class compositeWidget : public widget { public: virtual void draw() { //some drawing code for (int i = 0; i < widgets.size(); i++) widgets[i].draw(); } virtual void update() { //some drawing code for (int i = 0; i < widgets.size(); i++) widgets[i].update(); } private: std::vector widgets; };