Non hai capito: è l'impianto a essere un insieme di componenti. E deve essere il componente a implementare l'interfaccia comune a tutti.
codice:class Componente { public: virtual void metodo1(); virtual void metodo2(); }; class Impianto { public: void aggiungi(Componente*); void modifica(Componente*); void togli(Componente*); private: vector<Componenti*> comp; };