Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.

Forum Casio - Autres questions


Index du Forum » Autres questions » Aide C++
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

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




Lephenixnoir Hors ligne Administrateur Points: 21025 Défis: 143 Message

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.
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

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()
Lephenixnoir Hors ligne Administrateur Points: 21025 Défis: 143 Message

Citer : Posté le 04/07/2014 09:47 | #


Tu as bien ajouté Personnage.cpp au projet ?
Ninestars Hors ligne Membre Points: 2413 Défis: 22 Message

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 !!
Lephenixnoir Hors ligne Administrateur Points: 21025 Défis: 143 Message

Citer : Posté le 04/07/2014 09:51 | #


Ninestars a écrit :
Ah que c'est bête comme erreur !!

C'est pas pire qu'oublier d'inclure un header...
Louloux Hors ligne Ancien administrateur Points: 7035 Défis: 61 Message

Citer : Posté le 04/07/2014 12:58 | #


Ninestars a écrit :
...
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

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v42 © créé par Neuronix et Muelsaco 2004 - 2021 | Il y a 68 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd