Qui č l'esempio completo, con l'implementazione dei costruttori di copia.
Nota quello in Derived. In pratica ogni costruttore richiama il corrispondente nella classe base, dato che i costruttori sono esplicitati.

codice:
class Base {
    protected:
        int campo1;
        string campo2;
    public:
        Base(int c1, string s1) : campo1(c1), campo2(s1) {}
        Base(const Base& b) : campo1(b.campo1), campo2(b.campo2) {
        }

};

class Derived : public Base {
    protected:
        double campo3;
    public:
        Derived(int c1, string s1, double d1)  : Base(c1, s1), campo3(d1) {}
        Derived(const Derived& d) : Base( (const Base&) d), campo3(d.campo3){
          
        }
};

class Container {
    Derived d;
    public:
        Container(const Derived& md) : d(md) {}
};



int main() {
    Derived d(10, "ciao", 4.0);
    Container c (d);
}