2010-12-04 7 views
5

¿Cómo declaro que el constructor de B es amigo de A? Probé:¿Cómo declarar un amigo que es miembro de otra clase aún no definida en C++?

class A 
{ 
    private: 
    A(); 
    public: 
    friend B::B(); 
}; 

class B 
{ 
    public: 
    B(); 
}; 
+4

Acabo de editarlo para que no se cerrara. Algunos desencadenan cierres felices allí: tranquilicen a posibles hablantes no nativos o novatos, por favor. @IamMan, bienvenido a StackOverflow: trate de aclarar las preguntas y sangrar el código correctamente; de ​​lo contrario, la pregunta se cerrará si muchos de nosotros no la entendemos. Además, si alguien responde la pregunta correctamente, haga clic en la marca de verificación a la izquierda para indicar que es la respuesta correcta. –

Respuesta

7

reemplazar con B::class;

class A 
{ 
private: 
    A(); 
public: 
    friend class B; 
}; 

class B 
{ 
public: 
    B(); 
}; 
+6

Esta respuesta realmente hace que ALL of B sea un amigo. Probablemente sea lo que el OP quería, pero no lo que pedían. Lo que pidieron es imposible. Se debe informar a otras personas que buscan una respuesta a esta pregunta. –

+1

Sí. Esta respuesta debe modificarse para dejar en claro que la sugerencia no hace exactamente lo que la pregunta hacía, porque lo que la pregunta quiere no es posible. Si alguien aplicara esta respuesta, es posible que no piensen detenidamente sobre el hecho de que otorgan un acceso mucho más amplio que la pregunta original solicitada. (Llevar la idea al extremo: otra solución sería hacer públicos los miembros privados de 'A'. Esto también otorgaría el acceso deseado, pero de nuevo, otorgaría mucho más acceso del que el OP estaba buscando, debe ser señalado.) –

Cuestiones relacionadas