begin process at 2008 07 06 17:18:15
1 205 660 membres
227 nouveaux aujourd'hui
14 119 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Question syntaxe C++ [ Divers / Débutant(e) ] (max12)

Question syntaxe C++ le 10/11/2007 18:12:47

max12
(Admin CS)
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;

public:
    CVector(void);
    ~CVector(void);
    bool add(T data);
    void remove(Element* pE);

    //T getdata(Element* e);
};


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é.

A+

Re : Question syntaxe C++ le 10/11/2007 20:43:30

luhtor
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<int> et Element<double> n'ont rien a voir, ce sont deux classes totalement différentes.

Donc quand tu dis:
public:
    class Element; <= laquelle ?


Re : Question syntaxe C++ le 10/11/2007 21:20:16

max12
(Admin CS)
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<int>::~CVector<int>(void)" (??1?$CVector@H@@QAE@XZ)
main.obj : error LNK2001: unresolved external symbol "public: __thiscall CVector<int>::CVector<int>(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.

Bon merci de ton aide

Re : Question syntaxe C++ le 10/11/2007 23:18:14

luhtor
La c'est simple, il faut simplement que tout le code soit dans le fichier .h. Aucun code dans le cpp, ce qui est compréhensible.

Re : Question syntaxe C++ le 11/11/2007 01:17:11

gamemonde
Membre Club
il y a pas d'autres .h en jeu rien qu'un main à part ça.

alors ou sont lle code de ton constructeur et destructeur



Re : Question syntaxe C++ le 11/11/2007 23:04:58

max12
(Admin CS)
Merci pour votre aide mais j'ai fini par réussir à le faire fonctionner :)

http://laptopgun.blogspot.com/
&


Classé sous : public, class, data, element, template

Participer à cet échange

Pub



Appels d'offres

Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€
creation de marque et ...
Budget : 1 000€

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Téléchargements

Boutique

Boutique de goodies CodeS-SourceS