2012-08-22 8 views
10

Mögliche Duplizieren:
C++ using this pointer in constructorsKönnen wir 'dieses' Zeiger im Konstruktor

Wie der Titel kann ich so etwas wie den folgenden Code zu tun?

class A; 

class B { 
public: 
    B(A* p); 
    ... 
}; 

class A { 
    B m; 
public: 
    A():m(this){} 
    ~A(){} 
}; 
+0

Mögliche Duplikate: Es besteht ein Unterschied darin, einen This-Zeiger an den c'tor eines Members zu übergeben oder einen this-Zeiger an einen anderen Thread zu übergeben. Im ersten Fall kann man leicht kontrollieren, wann das Objekt im Bau zum ersten Mal aufgerufen wird, für das zweite ist es zumindest alles andere als einfach. –

Antwort

10

Ja, Sie können einen Zeiger an ein Objekt übergeben, das sich gerade im Aufbau befindet. Aber man muss bedenken, dass das Objekt noch nicht vollständig konstruiert ist. Was B also tun kann, ist, dass es den Zeiger für die spätere Verwendung speichert.

Ein Beispiel, wo dies oft verwendet wird, ist ein Std :: Stream und ein Stream-Puffer.

Verwandte Themen