Bonjour

J'ai une classe template permettant de gérer des piles, mais elle ne fonctionne pas comme il faut, j'ai toujours la même erreur à la compilation

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
22
23
24
25
#ifndef _STACK_H_
#define _STACK_H_
 
template<class T>
struct StackItem {
    StackItem<T> *prev;
    T val;
};
 
template<class T>
class Stack {
    StackItem<T> *first;
    unsigned int len;
public:
    Stack();
    Stack(T first);
    void Append(T item);
    void Del();
    T* Get();
    unsigned int Length();
    T* Pop();
};
 
#include "stack.cpp"
#endif
Stack.cpp contient les définitions des méthodes

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
#ifdef _STACK_H_
 
template<class T>
Stack<T>::Stack() {
    this->len = 0;
    this->first = NULL;
}
 
template<class T>
Stack<T>::Stack(T first) {
    StackItem<T> *f;
    f->val = first;
    f->prev = NULL;
    this->len = 1;
    this->first = f;
}//[...]
Je crée mon instance comme suit:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Stack<unsigned int> while_pos();
main.cpp:108: error: request for member `Append' in `while_pos', which is of non-class type `Stack<unsigned int> ()()'

main.cpp:111: error: request for member `Get' in `while_pos', which is of non-class type `Stack<unsigned int> ()()'
main.cpp:117: error: request for member `Del' in `while_pos', which is of non-class type `Stack<unsigned int> ()()'

main.cpp:138: error: request for member `Length' in `while_pos', which is of non-class type `Stack<unsigned int> ()()'

main.cpp:141: error: request for member `Length' in `while_pos', which is of non-class type `Stack<unsigned int> ()()'

main.cpp:142: error: request for member `Length' in `while_pos', which is of non-class type `Stack<unsigned int> ()()'
Les utilisations se font à l'intérieur d'un switch
Code : Sélectionner tout - Visualiser dans une fenêtre à part
while_pos.Append((unsigned int)f.tellg()); //ligne 108
Code : Sélectionner tout - Visualiser dans une fenêtre à part
*wpos = while_pos.Get(); //ligne 111
Code : Sélectionner tout - Visualiser dans une fenêtre à part
while_pos.Del(); //ligne 117
Code : Sélectionner tout - Visualiser dans une fenêtre à part
if(while_pos.Length() > 0) { //ligne 138
Les lignes 141 et 142 sont des appels à Stack<unsigned int>::Length de la forme:
[EDIT]J'utilise Dev-C++