Si je définir une sous-classe en C++, est-il automatiquement un ami de la classe qui le contient? Par exemple, est-ce légal:
class Outer {
public:
class Inner {
public:
void mutateOuter(Outer& o);
};
private:
int value;
};
void Outer::Inner::mutateOuter(Outer& o) {
o.value ++; // Legal? Or not?
}
Je demande parce que sur certains compilateurs j'ai essayé (VS2003) ce code ne fonctionne pas, mais je l'ai entendu au moins anecdotique que cela fonctionne sur certains compilateurs. Je ne peux pas trouver un article pertinent dans le C++ spec à ce sujet, et si quelqu'un peut citer quelque chose de spécifique qui permettrait de dire que c'est légal ou pas, ce serait super.
Merci beaucoup!