Bonsoir,
J'essaye d'écrire une classe conteneur (classe template) non présente dans la STL.
J'ai une des méthodes de ce conteneur qui prend en argument une fonction de callback (fonction template).
Mon problème est que j'ai une incompatibilité de type entre le typedef de ma fonction callback et l'appel que je fais à ma méthode.
A la compilation (VC+ 6 Windows) j'ai le message d'erreur :
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 template<typename T> void as_vector_callback(cont_cell<T> &cell) { ... } template<typename T> class cont { public: typedef void (*callback_t)(cont_cell<T> &cell); public: void as_vector(std::vector &v) { walk(as_vector_callback); } protected: void walk(callback_t callback); ... }; cont<int> c; std::vector v; ... c.as_vector(v);
error C2664: 'as_vector' : cannot convert parameter 1 from 'void (class cont<T> &)' to 'void (__cdecl *)(class cont<int> &)'
Une idée ?
EDIT :en recopiant l'erreur je vois qu'il y a un pb entre <T> et <int> et que ce que je passe à walk n'est pas une fonction !
Je poursuit mes investigations.
Partager