Bonjour,
J'ai un template dans lequel j'ai déclaré un type interne pour déterminer l'état de mon objet.
J'aimerais définir une fonction qui retourne l'état actuel de l'objet sous la forme du type interne:
Mais j'ai une erreur de compilation (E2316) "'Foo<T>::GetState() const' is not a memeber of 'Foo<T>'" à la ligne notée "ICI" ci-dessus et je n'arrive pas à savoir comment implémenter cette fonction...
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 template<class T> class Foo { public: Foo(); protected: typedef enum { stOne, stTwo } EState; EState GetState() const; EState FState; T otherVar; }; template<class T> Foo<T>::Foo() { FState=stOne; } template<class T> Foo<T>::EState Foo<T>::GetState() const { // <==== ICI return FState; }
Pour info, ça marche si je la déclare directement comme ça:
Mais je préfèrerais séparer la déclaration de l'implémentation, surtout que ma "vrai" fonction est bien plus longue que ça...
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 template<class T> class Foo { public: Foo(); protected: typedef enum { stOne, stTwo } EState; EState GetState() const {return FState; }; EState FState; T otherVar; };
Merci par avance pour votre aide
Partager