Wenn ich eine innere Klasse in C ++ definiere, ist sie automatisch ein Freund der Klasse, die sie enthält? Ist das zum Beispiel legal:
class Outer {
public:
class Inner {
public:
void mutateOuter(Outer& o);
};
private:
int value;
};
void Outer::Inner::mutateOuter(Outer& o) {
o.value ++; // Legal? Or not?
}
Ich frage, weil auf einigen Compilern, die ich ausprobiert habe (VS2003), dieser Code nicht funktioniert, aber ich habe zumindest anekdotisch gehört, dass er auf einigen Compilern funktioniert. Ich kann keinen relevanten Abschnitt in der C ++ - Spezifikation dazu finden, und wenn jemand etwas Bestimmtes zitieren kann, das besagt, dass es legal ist oder nicht, wäre das großartig.