Maison >développement back-end >C++ >Pourquoi est-ce que j'obtiens l'erreur « MyMessageBox ne nomme pas de type » en C ?

Pourquoi est-ce que j'obtiens l'erreur « MyMessageBox ne nomme pas de type » en C ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-26 05:12:14887parcourir

Why am I getting the

""MyMessageBox ne nomme pas de type" Erreur en C

Cette erreur se produit lorsqu'une classe tente d'utiliser une autre classe qui ne l'a pas fait été défini au préalable. Dans le code donné, la classe User déclare une variable membre nommée dataMsgBox, qui est cependant une instance de la classe MyMessageBox. compilation, MyMessageBox n'a pas encore été définie, ce qui entraîne l'erreur.

Pour résoudre ce problème, nous utilisons une forward déclaration Nous déclarons la classe User sans la définir au préalable, ce qui permet à MyMessageBox de faire référence. même sans sa définition complète. La séquence de définitions doit alors être inversée, avec MyMessageBox défini avant User.

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;
};

Alternativement, au lieu de passer des pointeurs, pensez à passer des références pour éviter les valeurs nulles :

class MyMessageBox
{
public:
    void sendMessage(const Message& msg, User& recvr);
    Message receiveMessage();
    vector<Message *>& dataMessageList;
};

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn