Aide C++
Posté le 04/07/2014 09:20
J'ai une erreur Expression must have class type à la ligne 14 (albert.mort() ) du dernier code.
Personnage.hpp
[brown]#ifndef DEF_PERSONNAGE[/brown]
[brown]#define DEF_PERSONNAGE[/brown]
class Personnage
{
[green]// Méthodes[/green]
public:
Personnage();
void attaque(Personnage &cible);
void perd_vie(int valeur);
bool mort();
[purple]int[/purple] a();
[green]// Attributs[/green]
public:
[purple]char[/purple] id;
[purple]char[/purple] type;
[purple]char[/purple] camps;
short vie;
[purple]unsigned char[/purple] x;
[purple]unsigned char[/purple] y;
};
#endif
Personnage.cpp
[brown]#include [gray]"Personnage.hpp"[/gray][/brown]
Personnage::Personnage()
{
id = [maroon]0[/maroon];
type = [maroon]0[/maroon];
camps = [maroon]0[/maroon];
vie = [maroon]100[/maroon];
x = [maroon]0[/maroon];
y = [maroon]0[/maroon];
}
void Personnage::attaque(Personnage &cible)
{
cible.perd_vie(10);
}
void Personnage::perd_vie(int valeur)
{
vie -= valeur;
[b][blue]if[/blue][/b] (vie < 0)
{
vie = [maroon]0[/maroon];
}
}
bool Personnage::mort()
{
[b][blue]return[/blue][/b] (vie == [maroon]0[/maroon]);
}
[purple]int[/purple] Personnage::a()
{
[b][blue]return[/blue][/b] 13;
}
testcpp.cpp
extern [gray]"C"[/gray]
{
[brown]#include [gray]"fxlib.h"[/gray][/brown]
[brown]#include [gray]"usefull.h"[/gray][/brown]
}
[brown]#include [gray]"Personnage.hpp"[/gray][/brown]
[purple]int[/purple] main()
{
Bdisp_AllClr_DDVRAM();
Personnage albert(), roger();
albert.mort();
[b][blue]while[/blue][/b] (1)
{
Bdisp_AllClr_DDVRAM();
locate(1,[maroon]1[/maroon]);
[green]//PrintV(albert.a);[/green]
Bdisp_PutDisp_DD();
Sleep(200);
}
[b][blue]return[/blue][/b] 1;
}
extern [gray]"C"[/gray]
{
[purple]int[/purple] AddIn_main(int isAppli, unsigned short OptionNum)
{
main();
[b][blue]return[/blue][/b] 1;
}
[brown]#pragma section _BR_Size[/brown]
unsigned long BR_Size;
[brown]#pragma section[/brown]
[brown]#pragma section _TOP[/brown]
[purple]int[/purple] InitializeSystem(int isAppli, unsigned short OptionNum)
{
[b][blue]return[/blue][/b] INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
[brown]#pragma section[/brown]
}
Citer : Posté le 04/07/2014 09:29 | #
Si tu utilises le constructeur par défaut, enlève les parenthèses à la déclaration -- on ne sait jamais.
Et dans la ligne qui tu as commentée -- parce qu'elle ne fonctionnait pas, je suppose --, il faut des parenthèses.
Citer : Posté le 04/07/2014 09:46 | #
Si je retire les parenthèses à la déclaration de albert : Personnage albert;
J'ai Undefined external symbol "Personnage::Personnage()
Citer : Posté le 04/07/2014 09:47 | #
Tu as bien ajouté Personnage.cpp au projet ?
Citer : Posté le 04/07/2014 09:48 | #
...
Ah ouais ça marche mieux comme ça...
Merci
Ajouté le 04/07/2014 à 09:50 :
Ah que c'est bête comme erreur !!
Citer : Posté le 04/07/2014 09:51 | #
Ah que c'est bête comme erreur !!
C'est pas pire qu'oublier d'inclure un header...
Citer : Posté le 04/07/2014 12:58 | #
...
Ah ouais ça marche mieux comme ça...
Merci
Ajouté le 04/07/2014 à 09:50 :
Ah que c'est bête comme erreur !!
Omg :aie2:
Ajouté le 04/07/2014 à 12:59 :
Mais bon, ça arrive à tout le monde