Dieser will nicht kompilieren:
class MainClass
{
public:
...
private:
class NestedClass
{ //Linie 39
...
};
class NestedClass * getNestedClassFor(int i);
};
Der Compiler sagt:
Fehler: 'class MainClass::NestedClass' ist privat
Wenn ich jedoch NestedClass public
mache, funktioniert es.
Warum funktioniert es nicht? Es ist nicht so, als ob ich eine verschachtelte Klasse über eine öffentliche Methode exportiere? Es ist nur eine private Methode, die einen Zeiger auf eine private Klasse zurückgibt. Irgendwelche Ideen?
Vielen Dank!
Update
Die Semikolons wurden korrigiert. Sie sind nicht das Problem. Auch das Schreiben von class
vor NestedClass ist nicht das Problem.
Hier ist die Fehlermeldung:
MainClass.h: Bei der Funktion 'MainClass::NestedClass* getNestedClassFor(int i)':
MainClass.h:39: Fehler: 'class MainClass::NestedClass' ist privat
MainClass.cpp:49: Fehler: innerhalb dieses Kontextes
Hier ist der Teil der .cpp-Datei, der ebenfalls eine Beschwerde darstellt:
class MainClass::NestedClass * getNestedClassFor(int i) //Linie 49
{
return NULL;
}