Bonjour.
J'apprends le concept de Template, dans le but de simplifier mon code et d'utiliser une class template pour gérer de la même façon différents types d'objets ( il me semble bien que cela peut servir a ca ).
Cependant, quand je tape ceci :
il me dit ceci :
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
31 template < typename T > class OBJECT_Template { public : OBJECT_Template () {} ~OBJECT_Template () {} template < typename Ti > void setObject ( Ti &target ) { std::unique_ptr < T > model ( new T ( target )); _template_vector.push_back ( std::move ( model ) ) ; } void update () { for ( std::vector < std::unique_ptr < T > > :: iterator it = _template_vector.begin() ; it != _template_vector.end() ; it ++ ) { ( *it ) -> update() ; } } private : std::vector < std::unique_ptr < T > > _template_vector ; };
"error:need ' typename ' before ' std::vector < std::unique_ptr < T > > :: iterator ' because ' std::vector < std::unique_ptr < T > > ' is a dependent scope.
Qu'a cela ne tienne, je rajoute ( bêtement ) typename devant vector :
et en effet, ca compile, et le programme fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 for ( typename std::vector < std::unique_ptr < T > > :: iterator it = _template_vector.begin() ; it != _template_vector.end() ; it ++ ) { ( *it ) -> update() ; }
Mais la fonction update de mon objet n'opère pas.
Savez vous d'où cela pourrait provenir ?
Merci si vous pouvez m'aider
Partager