[C++]Problème avec Classes dans CodeBlocks

Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011 - 7 mai 2011 à 18:28
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 9 mai 2011 à 10:39
Bonjour, je n'arrive pas à compiler un simple programme où je crée une classe dans CodeBlocks. Là j'ai uniquement les trucs automatiques (j'ai essayé avec mon code mais ça renvoie la même erreur). Le seul truc que j'ajoute est le "#inlude " dans main.cpp.

Voici ce que j'ai :

player.h
#ifndef PLAYER_H
#define PLAYER_H


class player
{
public:
player();
virtual ~player();
protected:
private:
};

#endif // PLAYER_H

player.cpp
#include "player.h"

player::player()
{
//ctor
}

player::~player()
{
//dtor
}

main.cpp
#include
#inlude

using namespace std;

int main()
{
cout << "Hello world!" << endl;
return 0;
}

Et les erreurs à la compilation :



...

Merci !

12 réponses

pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
7 mai 2011 à 18:47
Salut, remplace
#inlude 
par
#inlude "player.h"


Pop70
0
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
7 mai 2011 à 18:48
(include)...

Pop70
0
Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011
7 mai 2011 à 19:14
Suis-je bête. Malheureusement même après correction, ça ne change rien.

J'ai essayé avec <...>, "...", (pour changer de dossier j'imagine, c'est CB qui me propose ça), en vain.
0
pop70 Messages postés 181 Date d'inscription mardi 6 avril 2010 Statut Membre Dernière intervention 7 janvier 2012 10
7 mai 2011 à 19:30
Fais un clic-droit sur chacun des fichiers du projet, et regarde dans Proprieties/Build/ si Debug et Release sont bien cochés pour les fichiers .cpp et .h, et si pour les .cpp il y a aussi "Link file" et "Compile file" de cochés (ces deux dernier ne doivent pas l'être pour les .h).

C++dialement

Pop70
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011
7 mai 2011 à 21:56
Oui tout est coché :/

Malheur, je sens que je vais devoir travailler sur papier et remettre ça en ordre à l'univ

A noter que j'essaye de faire la même chose avec Qt creator et que là ça compile et s'exécute mais qu'il met un temps démesurément long pour ne rien faire (il devrait m'afficher des trucs via cout)... Du coup je l'arrête sans savoir ce qui ne marche pas :/
0
Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011
7 mai 2011 à 23:10
(Pas moyen d'éditer les messages ?)

J'ai remis tous les fichiers dans un même dossier et ça a compilé pour le truc tout simple. Compliquons le bazar donc :

player.h

#ifndef PLAYER_H
#define PLAYER_H


class player
{
public:
player();
~player();
bool isAlive();
int getScore();
bool majScore();

private:
int score;
bool alive;
};

#endif // PLAYER_H

player.cpp

#include "player.h"

player::player()
{
alive = true;
score = 0;
}

player::~player()
{

}

bool player::isAlive()
{
return alive;
}

int player::getScore()
{
return score;
}

bool player::majScore()
{
bool OK = true;
if(isAlive())
score++;
return OK;
}

main.cpp

#include
#include "player.h"

using namespace std;

int main()
{
cout << "test ";
player joueur1, joueur2;
int score1, score2;
score1 = joueur1.getScore();
cout << score1 << endl;
joueur1.majScore();
score2 = joueur2.getScore();
cout << score1 << "-" << score2 << endl;
return 0;
}


erreurs

http://img190.imageshack.us/img190/2756/tron2.png


Sur le coup je ne vois pas ce que j'ai mal écrit ou mal fait...

Merci de votre aide en tout cas !
0
Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011
7 mai 2011 à 23:14
PS : par rapport au code que je viens de mettre, j'ai supprimé les parenthèses lors de l'appel des fonctions dans le main.

Dois-je les laisser ou les supprimer ?
Les erreurs que j'ai postées se réfèrent à un code sans ces parenthèses.

Bonne nuit ;)
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
8 mai 2011 à 00:00
Comme tu débutes, tu fais quelques erreurs de débutant (normal):
- Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace
- Essaie aussi de mettre une majuscule au nom de classe, c'est une convention de lecture.
- Choisie ton camp: .cc/.hh ou .cpp/.hpp, mais le .h est normalement réservé aux fichier header du C, pas du C++.

Ensuite, pour QtCreator, il faut bien que tu choisisses de faire un projet simple en pur C++. Sinon, il te rajoute le framework Qt (pour faire des interfaces graphiques) et forcément, ça n'a rien à voir avec un programme console, d'où le comportement étrange que tu observes.

j'ai supprimé les parenthèses lors de l'appel des fonctions dans le main.

Une fonction s'appelle avec les parenthèses, donc oui tu dois forcément les laisser.

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011
8 mai 2011 à 23:44
Merci beaucoup pour ces infos.

Je m'interroge maintenant. Je crois que j'ai créé le bon truc avec QtCreator (C++ pur), est-ce que je peux compiler/exécuter le programme avec Qt ?
Le truc c'est que mon projet au final c'est avec interface graphique, mais que moi j'aimerais tester mes bouts de code (en particulier mes classes) pour voir si ça marche. Vu qu'avec Code::Blocks j'y arrive pas, est-ce qu'il y a moyen de lancer via Qt un "projet console" en C++ pur ? (Parce que les fonctions compiler/exécuter se sont grisées quand je suis passé dans ce mode.)

Ou alors y'a-t-il moyen d'avoir un retour de ce que le programme fait avec une interface graphique simple ?

Encore merci !
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 mai 2011 à 09:58
Personnellement, je te conseille très très fortement QtCreator. L'IDE (outil de développement) est disponible sous Windows, Mac, Linux et te permet de faire des applications qui sont facilement portables sous toutes plateformes (même certains téléphone portable), sans que tu n'ais rien d'autre à faire que ton programme. Le support de Qt est bien meilleur (normal, c'est l'équipe de Qt qui l'a faite). L'installation est très facile, quelquesoit la plateforme. Enfin, pour dévélopper des interfaces graphiques, je n'ai pour l'instant rien trouver de mieux que du Qt.
Après, c'est une préférence personnelle, Code::Block est aussi très bien, mais je le trouve en dessous de son concurrent (qui est plus récent), surtout sur certaines fonctionnalités (Sous QtCreator, le mode emacs ou Vim est disponible, on peut splitter ses fenêtres, configurer facilement tous les raccourcis clavier, la coloration, etc...).

Si tu es sous Windows, n'oublie pas d'ajouter un: "system("pause");", sinon forcément tu ne verras rien.

Pour faire un helloworld en application graphique, c'est extrêmement simple. Soit tu fais: créer un nouveau projet. Tu compiles, tu lances et c'est bon !
Soit tu copies ce morceau de code:
#include <QApplication>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QPushButton hello("Hello world!");
    hello.show();
    return app.exec();
}


________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Derezzed Messages postés 9 Date d'inscription samedi 7 mai 2011 Statut Membre Dernière intervention 11 mai 2011
9 mai 2011 à 10:37
Problème résolu avec QDebug.

Je ne comprends toujours pas pourquoi le programme ne se lance pas via un temrinal mais bon...

Merci beaucoup pour les réponses et bonne journée.
0
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
9 mai 2011 à 10:39
N'oublie pas non plus, qu'un programme console, se lance dans la console de QtCreator (en bas), et non dans un terminal séparé. Pour le lancer dans un terminal séparé, il faut l'exécuter "à la main".

________________________________________________________________________
Historique de mes créations, et quelques articles:
[ http://0217021.free.fr/portfolio http://0217021.free.fr/portfolio]
Merci d'utiliser Réponse acceptée si un post répond à votre question
0
Rejoignez-nous