AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment : -17%
Casque de réalité virtuelle Meta Quest 2 ...
Voir le deal
249.99 €

 

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

Aller en bas 
4 participants
AuteurMessage
arglow
Bavard
arglow


Messages : 108
Projet Actuel : Empereur

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 17: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 - 17:17, édité 1 fois
Revenir en haut Aller en bas
http://www.edooc.fr
hyper
Utilisateur confirmé: Rang ****
hyper


Messages : 1457
Localisation : près de Nantes
Projet Actuel : Super Note Aventure

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 17: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
https://cagibi.itch.io/
onilink_
Modérateur
onilink_


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

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 17: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.

_________________
[Résolu] C++ probleme avec class ultra simple ... Runningpotato1[Résolu] C++ probleme avec class ultra simple ... TvF6GED [Résolu] C++ probleme avec class ultra simple ... MdetltS
Revenir en haut Aller en bas
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 17: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
arglow


Messages : 108
Projet Actuel : Empereur

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 17: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 - 17:58, édité 1 fois
Revenir en haut Aller en bas
http://www.edooc.fr
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 17: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
arglow


Messages : 108
Projet Actuel : Empereur

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 18: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 ****
Asu


Messages : 895

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 18: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
onilink_


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

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 20: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".

_________________
[Résolu] C++ probleme avec class ultra simple ... Runningpotato1[Résolu] C++ probleme avec class ultra simple ... TvF6GED [Résolu] C++ probleme avec class ultra simple ... MdetltS
Revenir en haut Aller en bas
arglow
Bavard
arglow


Messages : 108
Projet Actuel : Empereur

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptyVen 30 Oct 2015 - 22: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
onilink_


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

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptySam 31 Oct 2015 - 1: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.

_________________
[Résolu] C++ probleme avec class ultra simple ... Runningpotato1[Résolu] C++ probleme avec class ultra simple ... TvF6GED [Résolu] C++ probleme avec class ultra simple ... MdetltS
Revenir en haut Aller en bas
arglow
Bavard
arglow


Messages : 108
Projet Actuel : Empereur

[Résolu] C++ probleme avec class ultra simple ... Empty
MessageSujet: Re: [Résolu] C++ probleme avec class ultra simple ...   [Résolu] C++ probleme avec class ultra simple ... EmptySam 31 Oct 2015 - 12: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é





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

Revenir en haut Aller en bas
 
[Résolu] C++ probleme avec class ultra simple ...
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] [XHTML] Besoin d'aide simple avec div class="aside"
» problème avec gravité [résolu] - problème avec mouvements
» [Resolu]Problème avec collision _ line avec mur entre 2 obj
» [Résolu] Problème avec "Ouvrir Avec"
» [RESOLU] Problème avec draw

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