Plusieurs fichiers sources

Résolu
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008 - 29 avril 2006 à 21:54
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 - 30 avril 2006 à 16:49
ReBonjour, dans mon projet, je dispose d'un fichier main.cpp qui contient la fonction main et les déclarations de classe.

Je pensais mettre, dans un fichier fonctions.cpp les fonctions associées aux classes du fichier main.cpp et aux variables qui sont dans la fonction main, mais cependant, le compilateur m'indique que ni ces variables ni cette classe n'ont été déclarés !!!

Comment faire ?

Merci de votre aide

14 réponses

cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
30 avril 2006 à 16:49
c'est ce qu'on apelle une variable globale :

http://c.developpez.com/faq/c/?page=types#TYPES_globales

pourra t'aider

@+;
satellite34

http://wxcod.free.fr/forum/
3
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
29 avril 2006 à 22:12
pour faire ca on utilise un fichier header : .h ou .hpp

pour bien faire, 1 header pour une classe, et 1 cpp par classe également

aprés #include "header.h";

@+;
satellite34

http://wxcod.free.fr/forum/
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
29 avril 2006 à 22:27
qu'entendez vous par "un cpp par classe". Et cela résoudra-t-il mes problèmes de variables ?
De plus, si dans ma fonction, je veux modifier des variables d'un objet de la classe, cela marchera-t-il ?
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
29 avril 2006 à 22:43
bon, de toutes facons ca peu que marcher vu que c'est comme  ca que l'on fait.

pour tes variables, aucun probleme.

en fait, pour chaque classe tu as  les declarations dans un .h et l'implémentation dans un .cpp.

enfin, vraiment c'est la base, regarde comment sont foutus les projets.

sinon, autre alternative mais couteuse en mal de tete, le fichier unique, mais la attention, quand tu arrive a 1500 lignes de codes, ben la moindre modif peu prendre du temps!

voila, sinon, vu la question, je te conseille d'aller lire un petit cours sur c/c++ sur developpez.com

@+;
satellite34

http://wxcod.free.fr/forum/
0

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

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
29 avril 2006 à 23:26
1500 ? facile, mais 10.000 ...
0
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
30 avril 2006 à 00:43
moi, je trouve qu'au dela de 1500 il faut absolument splitter, mai c une question de resolution et de taille d'ecran, lol, et de seuil de tolérance visuelle.

@+;
satellite34

http://wxcod.free.fr/forum/
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
30 avril 2006 à 09:05
ok merci je vais essayer
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
30 avril 2006 à 09:16
Bon ben certaines erreurs de compilation ont disparu, cependant, maintenant, j'ai l'erreur suivante :
multiple definition of `class1::fct1()' avec class1 définie dans header.h et qui contient :

class class1
{
       
       int nb;           
       int maxi;         
          
public:

       int fct1();        // La fonction
             
       
     
};

Quelqu'un saurait m'aider ?
Merci d'avance :)
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
30 avril 2006 à 12:07
tenez si ca peut vous aider, le code source complet :
Main.cpp :

#include
#include <cstdlib>
#include <windows.h>
#ifndef _HEADER_H_
#include "header.h"
#endif
using namespace std;

int n;
main(){
n=5;
obj1 a;
a.fct1();

}

FONCTIONS.CPP:
int obj1::fct1() {
/*.... du code ... */

}

HEADER.H:
class obj1{
private:
double cz;
int k;
public:
int fct1();

};
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
30 avril 2006 à 12:28
Au debut de ton .h, avant tout code, met ceci :

#ifndef __HEADER_H__
#define __HEADER_H__

Et à la fin de ton code, tu met :

#endif

Ca permet que ton fichier .h ne soit inclus qu'une seule fois.
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
30 avril 2006 à 13:14
Merci, ca a l'air de marcher !
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
30 avril 2006 à 13:47
... ca avait l'air de marcher, cependant, pour que la variable n soit accessible partout (à partir des différents fichiers sources), comment faire ? En effet, j'avais essayé de mettre ca déclaration dans header.h, mais ca ne va pas
0
nightlord666 Messages postés 746 Date d'inscription vendredi 17 juin 2005 Statut Membre Dernière intervention 23 mai 2007 10
30 avril 2006 à 13:48
Tu la déclare dans un fichier .cpp, et tu l'utilise dans les autres fichiers en faisant :

extern type nom_variable;
0
nisaloncaje Messages postés 154 Date d'inscription samedi 7 janvier 2006 Statut Membre Dernière intervention 28 septembre 2008
30 avril 2006 à 14:56
ok merci
0
Rejoignez-nous