Étant donné le code ci-dessous, le compilateur affiche un message indiquant error: templates may not be ‘virtual’
. Quelqu'un at-il une suggestion sur la façon de résoudre le bug?Les modèles ne peuvent pas être 'virtuels'
template < class FOO_TYPE>
class CFoo{
public:
...
template < class BAR_TYPE >
virtual void doSomething(const CBar<BAR_TYPE> &); // here's the error
...
virtual ~CFoo();
protected:
MyClass <FOO_TYPE> * m_pClass;
};
template < class FOO_TYPE >
template < class BAR_TYPE >
void CFoo<FOO_TYPE>::doSomething(const CBar<BAR_TYPE> & refBar){
...
}
Ce n'est pas un bug, c'est une fonctionnalité, vous ne pouvez pas déclarer un modèle de fonction qui est virtuel. Vous devez explorer une autre approche, et cela dépend de ce que vous essayez de faire ... – Nim
le fait est que le paramètre de la fonction est un objet modèle et je ne peux pas changer sa déclaration. – Javier
Pourquoi avez-vous besoin d'une fonction différente pour chaque instance de CBar? –