| [Résolu] C++ probleme avec class ultra simple ... | |
|
|
Auteur | Message |
---|
arglow Bavard
Messages : 108 Projet Actuel : Empereur
| Sujet: [Résolu] C++ probleme avec class ultra simple ... Ven 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 |
|
| |
hyper Utilisateur confirmé: Rang ****
Messages : 1457 Localisation : près de Nantes Projet Actuel : Super Note Aventure
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 30 Oct 2015 - 17:45 | |
| Pourquoi un argument à getVie() dans le .h ? Fais un essai sans argument (une méthode get n'a j'amais d'argument en plus je crois) _________________ côt.
|
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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. |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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. |
|
| |
arglow Bavard
Messages : 108 Projet Actuel : Empereur
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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... - 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 |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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...
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. |
|
| |
arglow Bavard
Messages : 108 Projet Actuel : Empereur
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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)) ===| |
|
| |
Asu Utilisateur confirmé: Rang ****
Messages : 895
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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) |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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". |
|
| |
arglow Bavard
Messages : 108 Projet Actuel : Empereur
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Ven 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. |
|
| |
onilink_ Modérateur
Messages : 9180 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Sam 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. |
|
| |
arglow Bavard
Messages : 108 Projet Actuel : Empereur
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... Sam 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 . Je vais essayer de comprendre comment le système de class fonctionne. Merci Florian |
|
| |
Contenu sponsorisé
| Sujet: Re: [Résolu] C++ probleme avec class ultra simple ... | |
| |
|
| |
| [Résolu] C++ probleme avec class ultra simple ... | |
|