AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 [Résolu] C++ probleme avec class ultra simple ...

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
arglow
Bavard
avatar

Messages : 108
Projet Actuel : Empereur

MessageSujet: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 16:41

Salut à tous,

Voila je m'essaye tranquillement au class mais clairement j'ai du mal avec la logique.

Voici mon premier problème :

main.cpp
Code:
#include <iostream>
#include <string>
#include "Personnage.h"

using namespace std;

int main()
{
    Personnage Arthur;
    Arthur.getVie();
    return 0;
}

Personnage.cpp
Code:
#include "Personnage.h"
#include <iostream>

using namespace std;

Personnage::Personnage() : vie(100)
{

}

void Personnage::getVie()
{
    return vie;
}


Personnage.h
Code:
#ifndef DEF_PERSONNAGE
#define DEF_PERSONNAGE

class Personnage
{
    public:
    Personnage();
    void getVie(int vie);

    private:

    int vie;
};

#endif

Je ne vois pas ou est le problème. Code block me retourne l'erreur suivante :

Code:
C:\Dev-Cpp\Examples\Hello\testClass\main.cpp||In function 'int main()':|
C:\Dev-Cpp\Examples\Hello\testClass\main.cpp|10|error: no matching function for call to 'Personnage::getVie()'|
C:\Dev-Cpp\Examples\Hello\testClass\main.cpp|10|note: candidate is:|
C:\Dev-Cpp\Examples\Hello\testClass\Personnage.h|8|note: void Personnage::getVie(int)|
C:\Dev-Cpp\Examples\Hello\testClass\Personnage.h|8|note:   candidate expects 1 argument, 0 provided|
||=== Build failed: 1 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Pourquoi ?

Merci de votre aide.
Florian


Dernière édition par arglow le Lun 2 Nov 2015 - 16:17, édité 1 fois
Revenir en haut Aller en bas
http://www.edooc.fr
hyper
Utilisateur confirmé: Rang ****
avatar

Messages : 1433

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 16:45

Pourquoi un argument à getVie() dans le .h ? Fais un essai sans argument Wink
(une méthode get n'a j'amais d'argument en plus je crois)

_________________
côt.
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 16:51

Yep soucis d'argument qui n'est présent que dans le prototype et pas ailleurs.

Sinon conseil pour commencer, fixe toi un style de notations.
Perso j'utilise ça:
NomDeClasse
nomDeFonction
nom_de_variable
_attribut_private
_membrePrivate

Ça permet en un coup d’œil de savoir a quoi t'as affaire, et c'est le plus léger a écrire je trouve.
Par exemple au début SFML utilisait NomDeFonction mais finalement il a fini par passer tout ça en nomDeFonction.

_________________
                 
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 16:54

onilink_ a écrit:
Yep soucis d'argument qui n'est présent que dans le prototype et pas ailleurs.

Sinon conseil pour commencer, fixe toi un style de notations.
Perso j'utilise ça:
NomDeClasse
nomDeFonction
nom_de_variable
_attribut_private
_membrePrivate

Ça permet en un coup d’œil de savoir a quoi t'as affaire, et c'est le plus léger a écrire je trouve.
Par exemple au début SFML utilisait NomDeFonction mais finalement il a fini par passer tout ça en nomDeFonction.
Au passage si je me souviens bien, leurs noms respectifs ce sont PascalCase, camelCase et snake_case.
Revenir en haut Aller en bas
arglow
Bavard
avatar

Messages : 108
Projet Actuel : Empereur

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 16:55

Je ne comprends pas.

Je viens de faire le test sans int vie dans le .h ou au contraire en le rajoutant dans le .cpp mais toujours la même erreur... gha

Code:
C:\Dev-Cpp\Examples\Hello\testClass\main.o:main.cpp|| undefined reference to `Personnage::Personnage()'|
C:\Dev-Cpp\Examples\Hello\testClass\main.o:main.cpp|| undefined reference to `Personnage::getVie()'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 3 second(s)) ===|

Ou suis je passé à coté de quelque chose.

Ok oni pour les conseil, je savais pour les class avec majuscule pour le reste je vais appliquer ça désormais.
Merci pour le conseil


Dernière édition par arglow le Ven 30 Oct 2015 - 16:58, édité 1 fois
Revenir en haut Aller en bas
http://www.edooc.fr
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 16:58

arglow a écrit:
Je ne comprends pas.

Je viens de faire le test sans int vie dans le .h ou au contraire en le rajoutant dans le .cpp mais toujours la même erreur... gha

Ou suis je passé à coté de quelque chose.

Ok oni pour les conseil, je savais pour les class avec majuscule pour le reste je vais appliquer ça désormais.
Merci pour le conseil

Normalement non. Tu pourrais nous donner le code?
Au passage le type de retour de ta fonction est un void. Or, tu essaies de retourner un int. Forcément ça ne compilera pas.
Dans le prototype (.h) et le code (.cpp) change void par int.
Revenir en haut Aller en bas
arglow
Bavard
avatar

Messages : 108
Projet Actuel : Empereur

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 17:00

Personnage.cpp :
Code:
#include "Personnage.h"
#include <iostream>

using namespace std;

Personnage::Personnage() : vie(100)
{

}

int Personnage::getVie()
{
    return vie;
}


Personnage.h :
Code:
#ifndef DEF_PERSONNAGE
#define DEF_PERSONNAGE

class Personnage
{
    public:
    Personnage();
    int getVie();

    private:

    int vie;
};

#endif


Erreur de code block différente :
C:\Dev-Cpp\Examples\Hello\testClass\main.o:main.cpp|| undefined reference to `Personnage::Personnage()'|
C:\Dev-Cpp\Examples\Hello\testClass\main.o:main.cpp|| undefined reference to `Personnage::getVie()'|
||=== Build failed: 2 error(s), 0 warning(s) (0 minute(s), 2 second(s)) ===|
Revenir en haut Aller en bas
http://www.edooc.fr
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 17:46

Tu es sûr que code::blocks a bien inclus Personnage.cpp dans ce qui doit être compilé? (Clic droit -> Properties)
Revenir en haut Aller en bas
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 19:40

undefined reference c'est une erreur de link, ça veut dire qu'une fonction a été déclarée mais que le compilateur ne trouve son implémentation nulle part.

Il faut bien comprendre la notion de prototype en C++.

Par exemple écrire:
int maFonction();
int x = maFonction();

sera valide pour le compilateur, car on lui indique qu'il existe une implémentation de maFonction, et a la fin de la compilation, quand il devra assembler tous les objets (les binaires au format .o) en l’exécutable (c'est la phase de link), s'il ne trouve pas l'implementation de maFonction alors qu'on a précisé qu'elle existe, et bien il va retourner un "undefined reference".

_________________
                 
Revenir en haut Aller en bas
arglow
Bavard
avatar

Messages : 108
Projet Actuel : Empereur

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Ven 30 Oct 2015 - 21:30

Soundii => je fais clic droit-> properties sur main.cpp dans code block ?

Onilink_ => pourtant tout est présent, tous les fichiers semblent bon, etc.
Comment puis je savoir si tous les fichiers sont bien compilé, etc ?

Car la je ne vois vraiment pas ce qui peut clocher... Impasse.
Revenir en haut Aller en bas
http://www.edooc.fr
onilink_
Modérateur
avatar

Messages : 8926
Localisation : Montpellier
Projet Actuel : Planet Centauri
OniDev

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Sam 31 Oct 2015 - 0:14

Vérifie que tous les .cpp sont bien inclus au projet de codeblocks.
Quand tu recompiles tout tu peux voir la ligne de commande envoyée par codeblocks pour la compilation, tu verras facilement s'il omet des fichiers.

_________________
                 
Revenir en haut Aller en bas
arglow
Bavard
avatar

Messages : 108
Projet Actuel : Empereur

MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   Sam 31 Oct 2015 - 11:43

Bon j'ai recré un projet console avec mes fichiers et cela fonctionne . Je pense que c'est parce que j'avais créer les fichiers vide sans l'aide de code block directement dans le dossier.

Cela fonctionne.

En tout cas merci à tous pour votre aide et votre patience clinoeuil . Je vais essayer de comprendre comment le système de class fonctionne.

Merci
Florian
Revenir en haut Aller en bas
http://www.edooc.fr
Contenu sponsorisé




MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   

Revenir en haut Aller en bas
 
[Résolu] C++ probleme avec class ultra simple ...
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» il as tu un probleme avec le site......
» Probleme avec mon epagneul
» Flan au chocolat/orange allégé et ultra simple et rapide....
» [résolu] Problème avec fichiers BKH
» Problème avec placenta et cicatrice de césarienne !

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Programmation-
Sauter vers: