Erreur de link avec les templates
Bonjour,
Tout d'abort, non, ce n'est pas le problême de la séparation de la source et du header ; je suis déja passé par lâ, tout le code est dans un seul fichier.h
Donc j'ai un code qui ressemble de loin à cela:
Code:
1 2 3 4 5 6 7
|
template <typename T> class A {
public:
class B { ... } ;
...
static int truc ;
} ; |
Les methodes de la classe B ont besoin d'acceder à la variable truc, mais le linker me dit des affaires du genre :
Citation:
in function A<T>::B::func() : undefined reference to A<T>::truc
Mais le plus rigolo c'est que il n'affiche des erreures que pour CERTAINES methodes de la classe B accedant à truc. Peut-etre qu'il limite le nombre d'erreur affichées ? Sinon c'est vraiment super-bizarre. Quelqu'un à une idée ? Voici un programme complet qui reproduit l'erreur:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
#include <iostream>
template <typename T> class A {
public:
class B {
public:
int func() {
truc = 3 ;
return truc ;
}
} ;
B b ;
static int truc ;
} ;
int main() {
A<int> a ;
std::cout << a.b.func() << std::endl ;
return 0 ;
} |
Merci