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++][help] Problème sur mes includes

dr_heinrich
dr_heinrich
Niveau 10
27 avril 2017 à 21:32:57

Wesh la miff j'ai chié mes includes je pense j'arrive pas a faire quelque chose de correct, en une minute si vous vous souvenez de votre C++ vous devriez trouver... moi je seche wlh :snif:

route.cpp

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
#include "voiture.h"
using namespace std;


void creerRoute(route r){
    r.longueur=79;
}

void ajouterVoiture(voituree v, route r){
    r.tab[0]=v.nom;
}

void afficheRoute(route r){
    for ( int i=0; i<r.longueur; i++){
        cout<<r.tab[i];
    }
    cout<< endl;

route.h

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct route {
    int longueur=79;
    //vector<char> tab(79);
    char tab[79];
};

voiture.cpp

//rien

voiture.h

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct voituree {
    int position=0;
    int vitesse=3;
    char nom='V';
};

main.cpp

#include <iostream>
#include "route.cpp"
#include "voiture.cpp"


using namespace std;

int vmax=5;

int main()
{
    route r;
    r.longueur=79;

}

Les erreurs


Wesh la miff j'ai chié mes includes je pense j'arrive pas a faire quelque chose de correct, en une minute si vous vous souvenez de votre C++ vous devriez trouver... moi je seche wlh :snif:

'''route.cpp'''

<code>#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
#include "voiture.h"
using namespace std;


void creerRoute(route r){
    r.longueur=79;
}

void ajouterVoiture(voituree v, route r){
    r.tab[0]=v.nom;
}

void afficheRoute(route r){
    for ( int i=0; i<r.longueur; i++){
        cout<<r.tab[i];
    }
    cout<< endl;

route.h

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct route {
    int longueur=79;
    //vector<char> tab(79);
    char tab[79];
};

voiture.cpp

//rien

voiture.h

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct voituree {
    int position=0;
    int vitesse=3;
    char nom='V';
};

main.cpp

#include <iostream>
#include "route.cpp"
#include "voiture.cpp"


using namespace std;

int vmax=5;

int main()
{
    route r;
    r.longueur=79;

}

Wesh la miff j'ai chié mes includes je pense j'arrive pas a faire quelque chose de correct, en une minute si vous vous souvenez de votre C++ vous devriez trouver... moi je seche wlh :snif:

route.cpp

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
#include "voiture.h"
using namespace std;


void creerRoute(route r){
    r.longueur=79;
}

void ajouterVoiture(voituree v, route r){
    r.tab[0]=v.nom;
}

void afficheRoute(route r){
    for ( int i=0; i<r.longueur; i++){
        cout<<r.tab[i];
    }
    cout<< endl;

route.h

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct route {
    int longueur=79;
    //vector<char> tab(79);
    char tab[79];
};

voiture.cpp

//rien

voiture.h

#include <iostream>
#include <stdlib.h>
#include <time.h>
#include <vector>
using namespace std;
struct voituree {
    int position=0;
    int vitesse=3;
    char nom='V';
};

main.cpp

<code>#include <iostream>

  1. include "route.cpp"
  2. include "voiture.cpp"

using namespace std;

int vmax=5;

int main()
{
route r;
r.longueur=79;

}

Les erreurs

||=== Build: Debug in Projet (compiler: GNU GCC Compiler) ===|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp|9|error: variable or field 'creerRoute' declared void|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp|9|error: 'route' was not declared in this scope|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp|13|error: 'route' has not been declared|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp||In function 'void ajouterVoiture(voituree, int)':|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp|14|error: request for member 'tab' in 'r', which is of non-class type 'int'|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp|17|error: variable or field 'afficheRoute' declared void|
C:\Users\Henri\Desktop\Projet Brenda\Projet\route.cpp|17|error: 'route' was not declared in this scope|
||=== Build failed: 6 error(s), 0 warning(s) (0 minute(s), 1 second(s)) ===|

Super-Roschan
Super-Roschan
Niveau 9
27 avril 2017 à 22:23:50

Ce fail avec les balises [[sticker:p/1kki]]

Super-Roschan
Super-Roschan
Niveau 9
27 avril 2017 à 22:27:37

Pour commencer, t'as inclus route.h nulle part, donc ni ton route.cpp (ni ton main indirectement) ne savent ce qu'est la structure route

MrBeauf
MrBeauf
Niveau 7
27 avril 2017 à 22:38:03

Salut, alors voilà comment ça marche.

Tu ne peux inclure que des .h, donc si tu inclus un .cpp, c'est qu'il y a une couille :hap:

Ensuite si tu ne veux aucun problèmes d'inclusions multiples, il faut que tu utiles les commandes du préprocesseur :


#ifndef CLASS_VOITURE 
#define CLASS_VOITURE

/*

CLASS_VOITURE doit être unique

*/

//Ton code

#endif

Pour les erreurs de "not declared in this scope" t'as plusieurs possibilité, le plus courant c'est juste l'oublie d'inclusion de l'objet courant. En gros tu essayes d'utiliser une roue alors qu'il n'existe pas dans ton fichier.

Donc pour conclure :

truc.h :
c'est pour créer l'interface

truc.cpp ( dans lequel il y a #include "truc.h" ) :
c'est pour implémenter les fonctions de ton truc.h

Voilà voilà ! :hap:

MrBeauf
MrBeauf
Niveau 7
27 avril 2017 à 22:45:40

Ah oui j'oubliais :

Si dans ton truc.h tu as :



#ifndef TRUC
#define TRUC

#include <iostream>
#include "truc2.h"
#include "truc3.h"
#include "time.h"

//blablabla

#ifndef

et que dans ton truc.cpp tu as



#include "truc.h"

/*

blablabla

*/

c'est comme si dans ton truc.cpp il y avait :


#include "truc.h"
#include <iostream>
#include "truc2.h"
#include "truc3.h"
#include "time.h"

//c'est pas exactement comme ça que ça se passe mais c'est comme ça qu'il faut le voir.

:hap:

dr_heinrich
dr_heinrich
Niveau 10
28 avril 2017 à 00:14:08

merci à tous pour vos réponses, je vais prendre tout ceci en compte et reprendre mon code pour que ça soit fait dans les règles de l'art :hap:

89ron
89ron
Niveau 10
28 avril 2017 à 01:20:00

Une astuce pour plus tard : ne pas mettre de "using namespace" dans les fichiers .h (ils doivent entre normalement utiliser que dans les fichiers de code .cpp)

Je te conseille egalement de mettre tous les includes necessaire a tes classes dans le fichier de declaration (le .h) coresspondant a la classe et mettre seulement un seul include dans ton fichier de definition (le .cpp) correspondant a ton fichier de declaration.

Message édité le 28 avril 2017 à 01:20:55 par 89ron
lokilok
lokilok
Niveau 17
28 avril 2017 à 09:38:01

Je te conseille egalement de mettre tous les includes necessaire a tes classes dans le fichier de declaration (le .h) coresspondant a la classe et mettre seulement un seul include dans ton fichier de definition (le .cpp) correspondant a ton fichier de declaration.

Je dirais non, le .h doit être le plus léger en include possible, histoire de gagner en temps de compilation, c'est même une bonne chose d'utiliser la forward-declaration lorsque possible.

Pseudo supprimé
Pseudo supprimé 28 avril 2017 à 11:45:22

Pareil, je mets que les inclusions nécessaires à la définition de la classe, parce que sinon le truc se propage aussi dans les fichiers qui incluent la déclaration de la classe.

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