J'ai une erreur dans mon code. Tous les forums dit "dans cette situation, utilisez la déclaration Forward". J'ai essayé cela et ça ne marche pas.Déclaration avant: classe non définie (C2079)
l'erreur est C2079 Credit :: mainMenu utiliser une classe de MainMenu pas déclaré (traduit du français)
J'ai modifié le classe pour être spécifique à la question.
main.cpp
#include <SFML/Graphics.hpp>
#include "Menu.h"
#include "credit.h"
#include "mainmenu.h"
MainMenu *mainMenu = new MainMenu();//works here
int main(){
return 0;
}
credit.h
#ifndef DEF_CREDIT
#define DEF_CREDIT
#include <SFML/Graphics.hpp>
#include "Menu.h"
class MainMenu;
class Credit : public Menu
{
private:
MainMenu mainMenu = MainMenu();//DON'T WORK HERE
};
#endif
mainmenu.h
#ifndef DEF_MAINMENU
#define DEF_MAINMENU
#include <SFML/Graphics.hpp>
#include "Menu.h"
#include "credit.h"
class MainMenu :public Menu
{
private:
Credit credit = Credit();//work
};
#endif
Fist i charge main.cpp après la credit.h
(il y a un credit.hpp
mais je ne pas utiliser la variable maintenant) après la mainmenu.h
(il y a aussi un mainmenu.hpp
, je ne pas utiliser la variable maintenant)
astuce: la classe Menu
n'inclut pas une de ces classes
Je peux vous envoyer le code complet si vous voulez
Merci à advence!
La déclaration directe ne peut être utilisée que pour les pointeurs (ou références) de ladite classe (par exemple MainMenu * mainMenu;) Sinon, la taille de la classe Credit ne peut pas être calculée au moment de la compilation. –
Quelle serait la taille de 'MainMenu' ou' Credit'? Vous devez utiliser un pointeur. – Jarod42
Homm ok, merci, je vais essayer avec des pointeurs –