Heim >Backend-Entwicklung >C++ >Warum erhalte ich in C die Fehlermeldung „MyMessageBox nennt keinen Typ'?

Warum erhalte ich in C die Fehlermeldung „MyMessageBox nennt keinen Typ'?

Barbara Streisand
Barbara StreisandOriginal
2024-11-26 05:12:14822Durchsuche

Why am I getting the

""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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn