Salut.
Y a t-il une raison pour que le code suivant compile SANS le mot static devant mon map et ne compile plus si je le met.
L'erreur est la suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class eboclass { public: static std::map<std::string, int (*)(eboclass *, int[])> _methods; string _className; public: void setMethod(string key, int (*test_somme)(eboclass *, int[])) { _methods.insert(std::make_pair(key, test_somme)); } int callMethod(const char *method, int fct_param[]) { return _methods[_className + "::" + method](this, fct_param); } };
byzarement c'est le method callMethod qui pose problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part test.cpp:(.text._ZN8eboclass10callMethodEPKcP6ebovar[eboclass::callMethod(char const*, ebovar*)]+0x50): undefined reference to `eboclass::_methods'
si je ne laisse que setMethod (qui elle aussi accède à _methods) ca fontionne !
PS: Si je sors ma variable static et que je la met en global ça fonctionne correctement.
Partager