Je me heurte =E0 un petit probl=E8me comment d=E9clarer une variable
statique dans une classe template quand le type de cette variable est
d=E9pendant?
myCS est utilis=E9 =E0 diff=E9rents endroits dans CoolStuff. Rien que du
tr=E8s classique...
Ce code compile bien, mais ne linke pas car la d=E9finition de MyCS
n'est trouv=E9e (elle devrait =EAtre dans un fichier source unique, mais
comme nous sommes en template...). Quelqu'un a une id=E9e pour
contourner le probl=E8me?
Ce code compile bien, mais ne linke pas car la définition de MyCS n'est trouvée (elle devrait être dans un fichier source unique, mais comme nous sommes en template...). Quelqu'un a une idée pour contourner le problème?
Non justement, en template elle est présente avec la définition de la classe, donc dans le .h par exemple, ou dans un fichier inclut dans le fichier de définition de la classe. (§14.5.1.3)
Un exemple : -------------- test.h ---------------------------------------
class Exemple { public : struct Interne { Interne(int Premier, int Second):Premier(Premier), Second(Second) {} int Premier; int Second; }; }; template < class T > class ExempleTemplate { public: static typename T::Interne B; };
Ce code compile bien, mais ne linke pas car la définition de MyCS
n'est trouvée (elle devrait être dans un fichier source unique, mais
comme nous sommes en template...). Quelqu'un a une idée pour
contourner le problème?
Non justement, en template elle est présente avec la définition de la
classe, donc dans le .h par exemple, ou dans un fichier inclut dans le
fichier de définition de la classe. (§14.5.1.3)
Un exemple :
-------------- test.h ---------------------------------------
class Exemple
{
public :
struct Interne {
Interne(int Premier, int Second):Premier(Premier),
Second(Second) {}
int Premier;
int Second;
};
};
template < class T > class ExempleTemplate
{
public:
static typename T::Interne B;
};
Ce code compile bien, mais ne linke pas car la définition de MyCS n'est trouvée (elle devrait être dans un fichier source unique, mais comme nous sommes en template...). Quelqu'un a une idée pour contourner le problème?
Non justement, en template elle est présente avec la définition de la classe, donc dans le .h par exemple, ou dans un fichier inclut dans le fichier de définition de la classe. (§14.5.1.3)
Un exemple : -------------- test.h ---------------------------------------
class Exemple { public : struct Interne { Interne(int Premier, int Second):Premier(Premier), Second(Second) {} int Premier; int Second; }; }; template < class T > class ExempleTemplate { public: static typename T::Interne B; };
Non justement, en template elle est présente avec la définition de la classe, donc dans le .h par exemple, ou dans un fichier inclut dans le fichier de définition de la classe. (§14.5.1.3)
Merci!
Arnaud
Anthony Fleury wrote:
Non justement, en template elle est présente avec la définition de la
classe, donc dans le .h par exemple, ou dans un fichier inclut dans le
fichier de définition de la classe. (§14.5.1.3)
Non justement, en template elle est présente avec la définition de la classe, donc dans le .h par exemple, ou dans un fichier inclut dans le fichier de définition de la classe. (§14.5.1.3)