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;
};