J'ai écrit un petit programme de test pour vérifier la solution proposée il
y a quelques jours par Falk Tannhäuser concernant l'accès à un membre de
classe grâce au pointeur "Membertype MaClasse::*member_ptr". J'ai essayé de
respecter la syntaxe proposée pour s'adapter au fait que les membres font
partie d'une classe template mais j'ai une erreur de compilation (voir tout
à la fin). J'ai recopié tout mon code qui compile à l'exception de l'appel à
updateParam qui fait une erreur "Failed to specialize...". Une idée pour
faire compiler ça ?
-----------------------------------------
test2.h
// Class genericParam
template <class ParamType>
class genericParam
{
public :
genericParam();
void operator=(const ParamType &right);
const ParamType getValue () const;
void setValue (ParamType value);
ParamType _value;
};
Compiling...
test2.cpp
d:\test_programs\test2\test2.cpp(33) : error C2893: Failed to specialize
function template 'void __thiscall SetOfParams::updateParam(class
genericParam<T> SetOfParams::*,const T &)'
With the following template arguments:
'int'
Error executing cl.exe.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Sebastien Mouret
"Laurent" writes:
Salut,
J'ai écrit un petit programme de test pour vérifier la solution proposée il y a quelques jours par Falk Tannhäuser concernant l'accès à un membre de classe grâce au pointeur "Membertype MaClasse::*member_ptr". J'ai essayé de respecter la syntaxe proposée pour s'adapter au fait que les membres font partie d'une classe template mais j'ai une erreur de compilation (voir tout à la fin). J'ai recopié tout mon code qui compile à l'exception de l'appel à updateParam qui fait une erreur "Failed to specialize...". Une idée pour faire compiler ça ?
changer de compilo? plus sérieusement, ca passe sur gcc et vc7.1
-- js
"Laurent" <laurent@mapson.org> writes:
Salut,
J'ai écrit un petit programme de test pour vérifier la solution proposée il
y a quelques jours par Falk Tannhäuser concernant l'accès à un membre de
classe grâce au pointeur "Membertype MaClasse::*member_ptr". J'ai essayé de
respecter la syntaxe proposée pour s'adapter au fait que les membres font
partie d'une classe template mais j'ai une erreur de compilation (voir tout
à la fin). J'ai recopié tout mon code qui compile à l'exception de l'appel à
updateParam qui fait une erreur "Failed to specialize...". Une idée pour
faire compiler ça ?
changer de compilo?
plus sérieusement, ca passe sur gcc et vc7.1
J'ai écrit un petit programme de test pour vérifier la solution proposée il y a quelques jours par Falk Tannhäuser concernant l'accès à un membre de classe grâce au pointeur "Membertype MaClasse::*member_ptr". J'ai essayé de respecter la syntaxe proposée pour s'adapter au fait que les membres font partie d'une classe template mais j'ai une erreur de compilation (voir tout à la fin). J'ai recopié tout mon code qui compile à l'exception de l'appel à updateParam qui fait une erreur "Failed to specialize...". Une idée pour faire compiler ça ?
changer de compilo? plus sérieusement, ca passe sur gcc et vc7.1
-- js
Laurent
Merci pour l'idée qui est effectivement la bonne, en fait il semble que VC++ 6 n'aime pas trop les fonctions templates hors de la définition de la classe. Le simple fait de déplacer la définition de updateParam dans la définition de class SetOfParams permet de compiler.
C'est cool ça marche et il y a même moyen d'appeler les accesseurs getValue et setValue sur le membre pointé via this->*member_ptr. Ca me simplifie bien ce que j'ai à faire !
Merci pour l'idée qui est effectivement la bonne, en fait il semble que VC++
6 n'aime pas trop les fonctions templates hors de la définition de la
classe. Le simple fait de déplacer la définition de updateParam dans la
définition de class SetOfParams permet de compiler.
C'est cool ça marche et il y a même moyen d'appeler les accesseurs getValue
et setValue sur le membre pointé via this->*member_ptr. Ca me simplifie bien
ce que j'ai à faire !
Merci pour l'idée qui est effectivement la bonne, en fait il semble que VC++ 6 n'aime pas trop les fonctions templates hors de la définition de la classe. Le simple fait de déplacer la définition de updateParam dans la définition de class SetOfParams permet de compiler.
C'est cool ça marche et il y a même moyen d'appeler les accesseurs getValue et setValue sur le membre pointé via this->*member_ptr. Ca me simplifie bien ce que j'ai à faire !