Bonjour,
voici mon problème:
j'ai un attribut public d'une de mes classes qui est déclaré static (pour etre utilisable ailleurs)
je l'initalise dans un autre fichier, et je voudrais l'utiliser dans un 3e fichier...
Pour cela voici le résumé du code :
//Dans MorphonApp.h
#include "MorphonGUI.h"
class MorphonApp {
public:
static MorphonGUI* mui;
...
}
/***************************************/
//Dans MyCallback.cxx
#include "MorphonApp.h
MorphonGUI* MorphonApp::mui = new MorphonGUI;
...
/***************************************/
// Dans MorphonImage.cxx
#include "MorphonApp.h"
extern MorphonGUI* MorphonApp::mui;
...
/***************************************/
et le compilateur me sort, au niveau du linkage : multiple definitions of symbol MorphonApp::mui
j'avais un peu le sentiment que quelque chose allait foirer, mais...
et là je vois pas comment je peux faire pour utiliser cette variable mui dans deux fichiers différents (car je veux préserver un minimum de modularité...)
vous me direz ptetre que c'est un probl de conception, et que je dois revoir tout le truc (jespère que non )
voilàà, merci d'avance
// 15 minutes plus tard... euh 100 fois désolé, j'ai un peu réfléchi, et la réponse est débile, ma variable doit juste etre initialisée en dehors de la classe... sinon elle est utilisable partout pour autant que j'inclus MorphonApp.h et que je l'appelle par MorphonApp::mui. Pas besoin donc de mettre "extern MorphonGUI* MorphonApp::mui;" dans le 3e fichier
j'ai pas trouvé de quoi supprimer mon propre message après l'avoir posté...(ça pourrait donc être utile à rajouter), donc je le réédite pour pas faire perdre de temps aux gens..
désolé pour tous ceux qui auront perdu 30 secondes et trois clics de souris.
pour les autres qui auront appris qqc, voilà
utilisation de static et extern
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.