Bonjour,
je commence à m'intéresser au template en c++, mais j'ai quelque difficultés.
sur la classe suivante :
J'ai une erreur lors de l'appel au setter de ma classe :
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
26
27
28
29
30 #ifndef FIELD_H #define FIELD_H #include <string> using namespace std; template <class T> class Field { public: Field(); void setValue(T); T getValue(); private: T value; }; template<class T> void Field<T>::setValue(T val){ value = val; } template<class T> T Field<T>::getValue(){ return value; }
à la ligne : f1.setValue(10); le compilateur me donne l'erreur suivante :
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 int main() { Field<int> f1(); f1.setValue(10); cout << f1.getValue() << endl; Field<string> f2(); f2.setValue("test f2"); cout << f2.getValue() << endl; return 0; }
error: request for member `setValue' in `f1', which is of non-class type `Field<int> ()()'
Je pense donc qu'il ne considère pas que ma classe setValue ne puisse prendre d'argument int ( ni string, il me ressort la même erreur lorsque je fait un setValue sur le string "test f2" : non-class type `Field<std::string> ()() )
Quelqu'un pourrait il m'éclairer sur mon problème s'il vous plait ?
Merci
Partager