Alors ouala, j'ai codé une petite class template tranquillou dans mon coin :
template<typename T> class maClasse {
maClasse(T) {}
~maClasse;
...
};
Pis j'ai déclaré dans un global.h quelques variables globales (oui je sais, ça rime avec "çay mal" ):
Code :
- namespace yo {
- typedef maClasse<int> maClasse_dint;
- typedef maClasse<truc> maClasse_detruc;
- extern maClasse_dint hop;
- extern maClasse_detruc hophop;
- }
|
Puis dans un .cpp, j'ai voulu faire un truc du genre :
Code :
- #include "global.h"
- namespace yo {
-
- fonction_quelconque()
- { // notez que les instanciations se font à l'intérieur de la fonction
- T chose;
- maClasse_dint hop(3);
- maClasse_detruc hophop(chose);
- ...
- }
- }
|
Et là, le linker, il est pas content.
Il me dit qu'il ne connait pas les types maClasse_dint et maClasse_detruc.
Par contre, si je fais :
Code :
- #include "global.h"
- namespace yo {
- // instanciations dans une portée globale
- maClasse_dint hop(3);
- maClasse_detruc hophop(chose);
- fonction_quelconque()
- {
- ...
- }
- }
|
là, ça roule, le linker il est content.
Ma question : Pourquoi donc ?
(j'espère n'avoir rien oublié)
Message édité par el muchacho le 26-10-2004 à 00:31:13