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 : 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;
}
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 : 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;
 
};
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