Heim >Backend-Entwicklung >C++ >Warum erhalte ich in C die Fehlermeldung „MyMessageBox nennt keinen Typ'?
""MyMessageBox benennt keinen Typ" Fehler in C
Dieser Fehler tritt auf, wenn eine Klasse versucht, eine andere Klasse zu verwenden, die keinen Typ hat Im angegebenen Code deklariert die User-Klasse eine Mitgliedsvariable mit dem Namen dataMsgBox, die jedoch zum Zeitpunkt von eine Instanz der MyMessageBox-Klasse ist Bei der Kompilierung wurde MyMessageBox noch nicht definiert, was zu dem Fehler führte.
Um dieses Problem zu beheben, verwenden wir die Forward-Deklaration. Wir deklarieren die User-Klasse, ohne sie zuerst zu definieren, wodurch MyMessageBox referenziert werden kann Es sollte dann auch ohne seine vollständige Definition umgekehrt werden, wobei MyMessageBox vor Benutzer definiert wird.
class User; // Forward declaration of User class MyMessageBox { public: void sendMessage(Message *msg, User *recvr); Message receiveMessage(); vector<Message *>& dataMessageList; }; class User { public: MyMessageBox dataMsgBox; };
Alternativ, anstatt zu übergeben Zeiger, erwägen Sie die Übergabe von Referenzen, um Nullwerte zu verhindern:
class MyMessageBox { public: void sendMessage(const Message& msg, User& recvr); Message receiveMessage(); vector<Message *>& dataMessageList; };
Das obige ist der detaillierte Inhalt vonWarum erhalte ich in C die Fehlermeldung „MyMessageBox nennt keinen Typ'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!