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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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 : 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
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