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
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
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
Je crée mon instance comme suit:
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; }//[...]
Code : Sélectionner tout - Visualiser dans une fenêtre à part Stack<unsigned int> while_pos();Les utilisations se font à l'intérieur d'un switchmain.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> ()()'
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 117Les lignes 141 et 142 sont des appels à Stack<unsigned int>::Length de la forme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part if(while_pos.Length() > 0) { //ligne 138
[EDIT]J'utilise Dev-C++
Code : Sélectionner tout - Visualiser dans une fenêtre à part while_pos.Length()
Partager