2012-08-22 10 views
10

Duplicar posibles:
C++ using this pointer in constructors¿Podemos utilizar este puntero dentro del constructor

Como el título, ¿puedo hacer algo como el siguiente código?

class A; 

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

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

Posible duplicado: existe una diferencia al pasar un puntero al cursor de un miembro o pasar este puntero a un hilo diferente. En el primer caso, uno puede controlar fácilmente cuándo se accede al objeto en construcción la primera vez, para el segundo, al menos es todo menos simple. –

Respuesta

10

Sí, puede pasar un puntero a un objeto actualmente en construcción. Pero debes tener en cuenta que el objeto aún no está construido por completo. Básicamente, lo que B puede hacer en su computadora es almacenar el puntero para usarlo más adelante.

Un ejemplo en el que a menudo se usa, es un std :: stream y un buffer de transmisión.

Cuestiones relacionadas