C ++ definiert die Klasse member struct und gibt sie in einer member-Funktion zurück

7

Mein Ziel ist eine Klasse wie:

%Vor%

, aber der Compiler gibt den Fehler, dass bei der Definition der öffentlichen Funktion getInfo(int) der Rückgabetyp userInfo kein Typname ist.

    
yolo 02.04.2011, 12:24
quelle

4 Antworten

4

Sie müssen die Reihenfolge der Mitglieder von UserInformation ändern und struct UserInfo über die Deklaration von getInfo setzen. Der Compiler beklagt sich, dass er die Signatur für getInfo nicht ermitteln kann, da die Definition seines Rückgabetyps noch nicht erkannt wurde.

Auch wenn Sie eine Struktur von der Funktion zurückgeben, muss der Typ der Struktur für die Aufrufer sichtbar sein. Sie müssen also auch die Struktur public erstellen.

    
Jon 02.04.2011, 12:27
quelle
12

Es ist sinnvoll, den verschachtelten Strukturtyp öffentlich zu machen, da der Benutzercode ihn verwenden kann. Legen Sie außerdem die Deklaration der Struktur vor dem Zeitpunkt ihrer ersten Verwendung ab. Außerhalb des Klassenbereichs verwenden Sie die Bereichsauflösung :: , um auf verschachtelte Typen zu verweisen.

%Vor%     
pic11 02.04.2011 12:37
quelle
4

Wenn die Elementfunktion öffentlich ist, muss der Rückgabetyp öffentlich sichtbar sein! Verschieben Sie daher die innere Strukturdefinition in den Abschnitt public .

Beachten Sie auch, dass vor die Funktion definiert werden muss, die es verwendet.

    
Oliver Charlesworth 02.04.2011 12:26
quelle
4

Mach einfach UserInformation::userInfo UserInformation::getInfo(int userId) .

Außerdem sollten Sie userInfo public deklarieren.

    
Alexander Gessler 02.04.2011 12:27
quelle