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

Signaler
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011
-
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
-
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

Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
Salut, remplace
#inlude 
par
#inlude "player.h"


Pop70
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
(include)...

Pop70
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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.
Messages postés
181
Date d'inscription
mardi 6 avril 2010
Statut
Membre
Dernière intervention
7 janvier 2012
8
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
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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 :/
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

(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 !
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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 ;)
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
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
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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 !
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
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
Messages postés
9
Date d'inscription
samedi 7 mai 2011
Statut
Membre
Dernière intervention
11 mai 2011

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.
Messages postés
3829
Date d'inscription
dimanche 12 décembre 2004
Statut
Modérateur
Dernière intervention
8 janvier 2021
114
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