Bonjour,

je commence à m'intéresser au template en c++, mais j'ai quelque difficultés.
sur la classe 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
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;
}
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
 
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;
}
à la ligne : f1.setValue(10); le compilateur me donne l'erreur suivante :
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