Bonjour.
Je cherche actuellement à réussir la spécialisation d'une méthode membre d'une sous-classe template :
la déclaration de la classe étant la suivante:
et l'implémentation de l'opérateur en question:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 template <int HiTime> class Cv_Acquisition : Base_Acquisition<CvCapture*> { [...] private : template <bool positive> class WaitOp { void operator()() const;//méthode à spécialiser }; [...] };
Jusqu'ici, pas de problème. mais lorsque j'essaye d'écrire une spécialisation, tout dérape.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 template <int HiTime> template <bool positive> void Cv_Acquisition<HiTime>::WaitOp<positive>::operator()() const { [...] }
En effet, le code
me renvoie les erreurs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template <int HiTime> template <> void Cv_Acquisition<HiTime>::WaitOp<false>::operator()() { }et si je tente de mettre la spécialisation directement apres la sous classe comme suit:Envoyé par gcc 4.4.1
j'ai alors droit à l'ereur:
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 <int HiTime> class Cv_Acquisition : Base_Acquisition<CvCapture*> { [...] private : template <bool positive> class WaitOp { void operator()() const; }; //SPECIALISATION template <> void WaitOp<false>::operator()() const { [...] } [...] };
J'avoue ne pas du tout comprendre la raison de ce refus du compilateur... si quelqu'un a une idee....Envoyé par gcc 4.4.1
merci![]()
Partager