std :: shared_ptr davon

Ich bin derzeit versuchen zu lernen, wie man smart-Pointer. Doch während dabei einige Experimente entdeckte ich die folgende situation, für die ich nicht finden konnte, ein satifying Lösung:

Stellen Sie sich vor Sie haben ein Objekt der Klasse A als Elternteil eines Objekts der Klasse B (das Kind), aber beide sollten einander kennen:

class A;
class B;

class A
{
public:
    void addChild(std::shared_ptr<B> child)
    {
        children->push_back(child);

        //How to do pass the pointer correctly?
        //child->setParent(this);  //wrong
        //                 ^^^^
    }

private:        
    std::list<std::shared_ptr<B>> children;
};

class B
{
public:
    setParent(std::shared_ptr<A> parent)
    {
        this->parent = parent;
    };

private:
    std::shared_ptr<A> parent;
};

Die Frage ist, wie kann ein Objekt der Klasse Einen pass, eine std::shared_ptr von sich selbst (this) zu seinem Kind?

Gibt es Lösungen für die Boost-shared-Pointer (Immer einem boost::shared_ptr für this), aber zu behandeln, wie dies mit der std:: smart Pointer?

Kommentar zu dem Problem
Ist wie mit jedem anderen Werkzeug, das Sie haben, es zu benutzen, wenn es angebracht ist. Die Verwendung von smart-Pointer für das, was Sie tun, ist nicht Kommentarautor: YePhIcK
Ähnlich wie boost. Siehe hier. Kommentarautor: juanchopanza
Dies ist ein problem auf dieser Ebene der Abstraktion. Sie wissen gar nicht, dass "dies" weist auf Speicher auf dem heap. Kommentarautor: Vaughn Cato
Gut, die Sprache nicht, aber Sie zu tun. Solange Sie verfolgen, was, wo, du wirst in Ordnung sein. Kommentarautor: Alex

InformationsquelleAutor der Frage Icarus | 2012-07-29

Schreibe einen Kommentar