CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

C++, problème déclaration class dans fichier.cpp

GorilleBlow
GorilleBlow
Niveau 43
23 décembre 2020 à 03:42:12

Bonjour,

Je commence la poo, et pour cela j'écris les class dans les fichier .h et les methodes dans des fichier .cpp
Le problème est que lors de la compilation j'ai le message d'erreur comme quoi la class na pas été déclarée dans le fichier cpp qui contient les methodes, j'ai pourtant bien la ligne avec le include + nom du fichier.h, les ficher se trouvent dans le meme dossier.
Quand j'écris les methodes dans le fichier main ça fonctionne, mais c'est pas tellement l'objectif d'avoir un fichier main surchargé de fonctions...
Je travaille sous code Blocks

MErci

pilo1488
pilo1488
Niveau 10
23 décembre 2020 à 09:35:45

Salut!

Sans voir le code c'est difficile de savoir pourquoi tu as ces erreurs de compilation, mais en gros, dans un fichier A.h tu peux définir comme ca :


class A {
  void foo();
};

et dans ton fichier A.cpp


#include "A.h"

void A::foo() {
}

(les noms des fichiers ne sont pas important)

GorilleBlow
GorilleBlow
Niveau 43
23 décembre 2020 à 16:13:10

C'est à dire que mon code est très très simple, c'est un code test pour bien commencer, d'ailleurs ma class s'appelle Test...

Voici:


//Test.h

#ifndef TEST_H_INCLUDED
#define TEST_H_INCLUDED
#include <iostream>
#include "Test.cpp"


class Test{
private:
    int x;
    void afficher_x();

public:
    void saisir_x();

};


#endif


//Test.cpp

#include <iostream>
#include "Test.h"

using namespace std;


void Test::afficher_x(){
    cout << x << endl;
}

void Test::saisir_x(){
    cout << "Saisir x: ";
    cin >> x;
    afficher_x();
}



//main.cpp

#include <iostream>
#include "Test.h"

using namespace std;


int main()
{
    Test premier;
    premier.saisir_x();
    return 0;
}


godrik
godrik
Niveau 30
23 décembre 2020 à 16:54:20

tu peux donner l'erreur et la commande qui la genere?

GorilleBlow
GorilleBlow
Niveau 43
23 décembre 2020 à 16:59:46

En gros tout ce qui fait référence à la classe..

" 'Test' has not been declared"
" 'x' was not declared in this scope"

Comme si le include n'existait pas

thefearisback
thefearisback
Niveau 9
23 décembre 2020 à 17:36:49

Enlève le #include "Test.cpp" :(

godrik
godrik
Niveau 30
23 décembre 2020 à 18:33:48

c'est difficile de diagnostiquer une erreur sans avoir l'erreur elle meme.

A ce niveau la, je ne sais pas si c'est une erreur de compilation ou d'edition de lien.

Thefearisback semble pointer a une erreur de compilation. Mais on aurait trouver l'erreur immediatement si tu avais donne le code et le message d'erreur.

GorilleBlow
GorilleBlow
Niveau 43
23 décembre 2020 à 20:13:29

Le 23 décembre 2020 à 17:36:49 Thefearisback a écrit :
Enlève le #include "Test.cpp" :(

Si je l'enlève ça me dit dans main que la fonction n'a pas été initialisé dans la classe
Edit: au final ça marche sans lol

Le 23 décembre 2020 à 18:33:48 godrik a écrit :
c'est difficile de diagnostiquer une erreur sans avoir l'erreur elle meme.

A ce niveau la, je ne sais pas si c'est une erreur de compilation ou d'edition de lien.

Thefearisback semble pointer a une erreur de compilation. Mais on aurait trouver l'erreur immediatement si tu avais donne le code et le message d'erreur.

||=== Build: Debug in sec (compiler: GNU GCC Compiler) ===|
Test.cpp|7|error: 'Test' has not been declared|
Test.cpp||In function 'void afficher_x()':|
Test.cpp|8|error: 'x' was not declared in this scope|
Test.cpp|11|error: 'Test' has not been declared|
Test.cpp||In function 'void saisir_x()':|
Test.cpp|13|error: 'x' was not declared in this scope|
||=== Build failed: 4 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|

Voilà toutes les erreurs. La prochaine fois je donnerai tout immédiatement :gni:

Message édité le 23 décembre 2020 à 20:15:18 par GorilleBlow
GorilleBlow
GorilleBlow
Niveau 43
23 décembre 2020 à 20:25:37

Bon j'ai fini par trouver l'erreur, en fait godrik quand tu as dit que c'était certainement une erreur de compilation je me suis souvenu que a la création des fichiers j'ai pas coché les cases release et debug.... j'en ai re créée en cochant ces cases et ça a l'air de fonctionner

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment