cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014
-
10 nov. 2007 à 18:12
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014
-
11 nov. 2007 à 23:04
Bonjour,
J'ai c'est la première fois que j'utilise les template en C++ et j'ai un soucis, c'est surement quelque chose de très simple au point que vous allez rire de moi pendant des mois, mais je suis a veille de devenir fou anyway.
#pragma once
template <class T>
class Element
{
Element* next;
Element* prev;
T data;
public:
Element(T data)
{
this->data = data;
}
};
template <class T>
class CVector
{
public:
class Element;
private:
Element* pFirst;
int nb;
Sa compile sur G++ mais lorsque je tombes dans VC++ ou que je passe dans dans Eclipse j'obtient :
erreur: expected «=", «,", «;", «asm" or «__attribute__" before «<" token Spidermail vector_template.h line 3 1194714081459 5
Qu'est-ce que je fais de mal ?????????????? VC++ c'est la même erreur mais dans terme différent et lui me parle de mettre }; avant template ou je sais plus quoi.
il y a pas d'autres .h en jeu rien qu'un main à part ça.
Assez décourageant pour une fois depuis longtemps que je suis un tantinet motivé.
luhtor
Messages postés2023Date d'inscriptionmardi 24 septembre 2002StatutMembreDernière intervention28 juillet 20086 10 nov. 2007 à 20:43
template <class T>
class CVector
{
public:
class Element<T>;
..
};
A mon avis, ca lui fera pas de mal. Mais vu le message d'erreur, c'est pas sur que ce soit uniquement cela.
Faut bien voir que Element et Element<double> n'ont rien a voir, ce sont deux classes totalement différentes.
cs_max12
Messages postés1491Date d'inscriptiondimanche 19 novembre 2000StatutModérateurDernière intervention 7 juillet 2014 10 nov. 2007 à 21:20
Rebonjour
Class Element fait référence à celle du dessus, en faite sa ne devrait pas être là mais j'ai vu dans un exemple quelqu'un qui le faisait donc j'ai copié en espérant donner un résultat. Bon finalement j'ai utiliser une classe deja faite template en exemple et encore j'obtient une erreur sans queue ni tête sauf quand je vais sous VC++6 la c'est #1 sans erreur mais sous 2003 et 2005 c'est l'hécatombe.
Sous VC6 j'ai plus l'erreur bizaröde mais j'obitent plutot :
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CVector::~CVector(void)" (??1?$CVector@H@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CVector::CVector(void)" (??0?$CVector@H@@QAE@XZ)
Il y a peut-être un liens entre les 2 mais que les compilateurs focus pas sur la même chose.