Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1487 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Variables accessibles dans plusieurs fichiers

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Variables accessibles dans plusieurs fichiers

n°1091766
Xixor
Posté le 21-05-2005 à 19:27:02  profilanswer
 

Bonjour,
 
Je suis en train de faire un projet d'info, et j'aimerais avoir 2 variables (unsigned int) qui sont accessibles dans plusieurs fichiers :
 
J'ai plusieurs couples de .cc et .h qui contiennent chacun une classe, et j'aurais besoin que ces  2 variables soient accessibles partout. J'ai essayé avec un namespace dans un fichier dimensions.h (entouré de #ifndef _DIMENSIONS_H #define _DIMENSIONS_H #endif), et #include "dimensions.h" chaque fois que j'en ai besoin, mais ça ne semble pas fonctionner, le compilateur m'insulte comme quoi je redéfinis plusieurs fois les mêmes membres du namespace.
 
Je ne sais pas si l'idée du namespace est bonne, ou si il y a quelque chose d'autre de plus propre et plus efficace.
 
Merci d'avance pour votre aide !

mood
Publicité
Posté le 21-05-2005 à 19:27:02  profilanswer
 

n°1092103
Xixor
Posté le 22-05-2005 à 00:15:06  profilanswer
 

Hum j'ai peut-être pas été très clair...
 
Ce que je voudrais en fait ça serait avoir une variable qui soit comme M_PI :
 
Je fais #include "kkchose.h" (<cmath> pour M_PI)
 
et après dans le code les variables hauteur et largeur (M_PI) font référence à ce qui est contenu
dans "kkchose.h"
 
Si en plus il est possible de modifier ces 2 variables c'est encore mieux, mais c'est pas vital
 
Bonne soirée, A+

n°1092189
cricri_
Posté le 22-05-2005 à 08:28:26  profilanswer
 

Si j'ai bien compris il suffit de définir ta variable une seule fois en globale dans un des fichiers.c, de la déclarer en extern dans un .h qui sera inclu dans les .c qui en ont besoin.
Maintenant c'est très bourrin ... peut-être que tu peux mettre cette variable dans un classe et la rendre accessible via un accesseur ( pas sûr que ça soit très français ça ... ;))

n°1092298
cricri_
Posté le 22-05-2005 à 12:33:10  profilanswer
 

On doit d'ailleurs pouvoir appliquer ça à un namespace j'imagine, pas essayé ...

n°1092301
Taz
bisounours-codeur
Posté le 22-05-2005 à 12:43:49  profilanswer
 

<cmath> pour M_PI
 
M_PI n'est pas standard, ne t'attend pas à trouver M_PI dans tous les cmath

n°1092316
Tarabiscot​e
Posté le 22-05-2005 à 13:11:12  profilanswer
 

T'as rajouté le mot-clef const ?
 
(si j'ai bien compris ce que tu veux faire)

n°1092328
Xixor
Posté le 22-05-2005 à 13:29:37  profilanswer
 

Bin en fait justement pas de const, parce que j'aimerais pouvoir modifié ces valeurs...
 
Là je suis en train de me dire que je pourrais faire une classe parce que j'ai une fonction qui va avec les dimensions (qui regarde si une position donnée est dans le monde). C'est possible de déclarer une instance de classe dans un .cc juste après sa déclaration ?
 
Je vais essayer ça...

n°1092342
Tarabiscot​e
Posté le 22-05-2005 à 13:58:29  profilanswer
 

"Déclaration" ? Tu veux dire class maClass; ?
La réponse est non, mais tu peux avoir un pointeur sur un objet de cette class dans ce cas.
 
Sinon "définition" : class maClass {/* tout ce dont ta class a besoin ici */};
Dans ce cas là c'est bon.
 
Petit rappel :
Une "définition" de class peut être dans un .h.
Tu peux définir ce que contient la class (fonction, variables, ...) dans un .cc ou directement dans ta class pour les fonctions (dans ce cas là les fonctions seront inline).

n°1092349
Xixor
Posté le 22-05-2005 à 14:09:03  profilanswer
 

ok mais je parlais d'une instance de classe  ;)
 
voilà mon dimensions.h :
 
#ifndef _DIMENSIONS2_H
#define _DIMENSIONS2_H
 
class Dimensions
{
        // on choisit que le monde va de 0 à largeur sur x et de 0 à hauteur sur y
public:
        Dimensions(unsigned int x1 = 500, unsigned int y1 = 500);
        bool dansMonde(int x, int y);
        void setLargeur(unsigned int x);
        void setHauteur(unsigned int y);
private:
        unsigned int largeur; // sur l axe X
        unsigned int hauteur; // sur l axe Y
};
 
Dimensions dimensions;
 
#endif
 
il y aussi le .cc qui contient le corps des fonctions. Quand j'ai besoin d'utiliser l'instance dimensions, je fais simplement un "#include "dimensions2.h" et après il est tout à fait possible de faire dimensions.dansMonde(2,4) où dimensions est l'instance initialisé dans dimensions2.h
 
Je peux compiler dimensions2.cc en .o sans problèmes, mais j'ai un problème quand je linke tout mes fichiers .o  (plusieurs fichiers ont besoin de l'instance dimensions. Je cherche un moyen de copier-coller le message d'erreur (je compile sous cygwin) et je le poste.


Message édité par Xixor le 22-05-2005 à 14:09:53
n°1092357
Tarabiscot​e
Posté le 22-05-2005 à 14:19:54  profilanswer
 

Ah non ça non plus tu n'as pas le droit de le faire.
Si tu as besoin d'avoir une instance globale :
extern Dimensions dimensions;
à la place de :
Dimensions dimensions;
 
et défini dimensions dans ton .cc :
Dimensions dimensions;

mood
Publicité
Posté le 22-05-2005 à 14:19:54  profilanswer
 

n°1092367
Xixor
Posté le 22-05-2005 à 14:29:16  profilanswer
 

Merci beaucoup !  
Ca marche !!!
 
J'ai mis "extern Dimensions dimensions;" dans le .cc et rien dans ce genre pour le .h et ça marche !!! c'est cool !
 
A+

n°1092379
Xixor
Posté le 22-05-2005 à 14:35:36  profilanswer
 

Ah non en fait il fallait metre extern Dimensions dimensions;  
dans le .cc et le .h

n°1092384
Tarabiscot​e
Posté le 22-05-2005 à 14:38:54  profilanswer
 

Mais non c'est extern Dimensions dimensions; dans le .h et Dimensions dimensions; dans le .cc (un seul .cc bien sûr).
Et ne pas oublier te tout recompiler.

n°1092394
Xixor
Posté le 22-05-2005 à 14:46:50  profilanswer
 

ok effectivement ça marche mieux comme ça ;)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Variables accessibles dans plusieurs fichiers

 

Sujets relatifs
[XForms] Plusieurs modèles dans un documentvariables de session
Recuperez des noms de dossier dans des variablessupprimer des mots dans des fichiers
Plusieurs langages dans un même projet ASP.NETSécuriser l'accès à des fichiers (non php)
mail () plusieurs champs dans formulairenbre de fichiers dans un répertoire
Fichiers et dossiers doubles 
Plus de sujets relatifs à : Variables accessibles dans plusieurs fichiers


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR