variable globale "interclasses"
Bonjour,
Petite question de pure programmation : comment partager des variables entre plusieurs classes (contenues dans différents fichiers) ?
J'avais pensé à mettre mes déclarations avec le mot clé extern dans un .h que j'inclus dans chaque .cpp interessé, mais j'ai des erreurs...
Quelle est la meilleure démarche à suivre dans ces cas là ?
erreur de lien... et questions sur les classes MFC AppWizard
Merci pour ces méthodes qui semblent plus propres... Mais j'ai toujours la même erreur de lien :
Citation:
IODlg.obj : error LNK2001: unresolved external symbol "private: static class CObjectGUI * * SharedData::objectsGUItab" (?objectsGUItab@SharedData@@0PAPAVCObjectGUI@@A)
IODlg.obj : error LNK2001: unresolved external symbol "private: static int SharedData::objectsGUItab_i" (?objectsGUItab_i@SharedData@@0HA)
Mon .h est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11
| #include "objectGUI.h"
#define MAX_OBJECTS_NB 255
class SharedData
{
friend class CGui_testView;
friend class CIODlg;
private:
static CObjectGUI * objectsGUItab[MAX_OBJECTS_NB];
static int objectsGUItab_i;
}; |
et j'accède aux variables dans une fonction de la classe CIODlg comme suit :
Code:
SharedData::objectsGUItab[SharedData::objectsGUItab_i++]=attachedGUIObj;
Bien sur j'ai essayé d'éviter les variables globales, mais je ne sais pas si c'est possible dans mon cas que je vais essayer de vous expliquer simplement :
J'ai une application graphique créée avec MFC AppWizard dans laquelle je veux que l'utilisateur puisse placer des objets, les déplacer... Je veux donc placer mes objets dans un tableau de CBitmapButton. Il sont créés dans une classe en relation avec les dialog box demandant des informations avant la création, mais doivent être affichés grâce au OnDraw de la classe CGui_testView (mon nom de projet est gui_test). A moins qu'il y ai un autre moyen pour afficher ces fameux CBitmapButton dans "l'espace blanc central" de cette appli MFC ? Et donc le problème est que la classe CGui_testView est appelée avec :
Code:
1 2 3 4 5
| pDocTemplate = new CSingleDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CGui_testDoc),
RUNTIME_CLASS(CMainFrame),
RUNTIME_CLASS(CGui_testView)); |
Il n'y a donc pas d'objet de type CGui_testView à partir duquel récupérer la valeur de certains membres ?
[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]
Re: erreur de lien... et questions sur les classes MFC AppWi
Citation:
Envoyé par pi05
Mon .h est le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11
| #include "objectGUI.h"
#define MAX_OBJECTS_NB 255
class SharedData
{
friend class CGui_testView;
friend class CIODlg;
private:
static CObjectGUI * objectsGUItab[MAX_OBJECTS_NB];
static int objectsGUItab_i;
}; |
Et le .cpp ?