Aufruf default-copy-Konstruktor von innen überlastet copy-Konstruktor

Schreiben brauche ich eine copy-Konstruktor deep kopiert den Inhalt von einer std::shared_ptr. Es gibt jedoch eine Reihe von Variablen int a, b, c, d, e; auch in der Klasse definiert. Gibt es eine Möglichkeit zum generieren der default-copy-Konstruktor-code (oder rufen Sie die Standard-copy-Konstruktor) in meinem neuen überlastet man.

Hier ist ein code-snippet mit einem Kommentar, hoffentlich klärt sich das Problem.

class Foo {
public:
     Foo() {}
     Foo(Foo const & other);
     ...
private:
     int a, b, c, d, e;
     std::shared_ptr<Bla> p;
};

Foo::Foo(Foo const & other) {
    p.reset(new Bla(*other.p));

    //Can I avoid having to write the default copy constructor code below
    a = other.a;
    b = other.b;
    c = other.c;
    d = other.d;
    e = other.e;
}
  • Warum brauchen Sie, um deep-copy ist ein gemeinsames Zeiger? Nicht seinen Sinn und Zweck auf eine gemeinsame Ressource? Wenn Sie haben einzigartige Eigentum, betrachten Sie mit einem unique_ptr.
  • Da jede Instanz von Foo braucht eine shared_ptr zu passieren um zu mehreren anderen Klassen.
  • Die "..." im obigen code stellt eine öffentliche Schnittstelle zum p.
InformationsquelleAutor Alan Turing | 2011-09-04
Schreibe einen Kommentar