2010-12-04 31 views
5

Comment je déclare le constructeur de B être un ami de A? J'ai essayé:Comment déclarer un ami qui est une fonction membre d'une autre classe pas encore définie en C++?

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

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

Juste édita il ne serait pas fermé. Certains déclencheurs heureux là-bas - donner un certain relâchement à un locuteur non natif potentiel ou débutants s'il vous plaît. @IamMan, bienvenue dans StackOverflow - essayez de faire en sorte que les questions soient claires et indentées correctement, sinon la question sera fermée si beaucoup d'entre nous ne la comprennent pas. En outre, si quelqu'un répond correctement à la question, cliquez sur la coche à gauche pour indiquer que c'est la bonne réponse. –

Répondre

7

B:: avec class remplacer;

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

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

Cette réponse fait de TOUS B un ami. C'est probablement ce que l'OP voulait, mais pas ce qu'ils ont demandé. Ce qu'ils ont demandé est impossible. Les autres personnes cherchant une réponse à cette question doivent être averties. –

+1

Oui. Cette réponse devrait être modifiée pour préciser que la suggestion ne fait pas exactement ce que la question demandait --- parce que ce que veut la question n'est pas possible. Si quelqu'un devait appliquer cette réponse, il se peut qu'il ne réfléchisse pas au fait qu'il accorde un accès beaucoup plus large que la question originale demandée. (Pour pousser l'idée à l'extrême: une autre solution consisterait à rendre les membres privés de «A» publics, ce qui donnerait également l'accès souhaité, mais encore une fois, elle accorderait beaucoup plus d'accès que le PO ne le souhaitait, devrait être souligné.) –