Template: retour d'un type interne
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:
Code:
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;
} |
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...
Pour info, ça marche si je la déclare directement comme ça:
Code:
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;
}; |
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...
Merci par avance pour votre aide