J'ai implémenté des pointeurs de comptage de référence (appelés SP
dans l'exemple) et j'ai des problèmes de polymorphisme que je ne devrais pas avoir.Pointeurs intelligents et polymorphisme
Dans le code suivant:
SP<BaseClass> foo()
{
// Some logic...
SP<DerivedClass> retPtr = new DerivedClass();
return retPtr;
}
DerivedClass
hérite de BaseClass
. Avec des pointeurs normaux cela aurait dû fonctionner, mais avec les pointeurs intelligents, il est écrit "cannot convert from 'SP<T>' to 'const SP<T>&"
et je pense qu'il fait référence au constructeur de copie du pointeur intelligent.
Comment autoriser ce type de polymorphisme avec un pointeur de comptage de référence? J'apprécierais que les exemples de code provoquent évidemment quelque chose d'incorrect ici si j'ai ce problème.
PS: Veuillez ne pas me dire d'utiliser une bibliothèque standard avec des pointeurs intelligents, car c'est impossible pour le moment.
Veuillez indiquer le code du constructeur de copie. – Danvil
Lors de la lecture des messages d'erreur de modèle, il est important de noter ce que le «T» signifie dans chaque position. L'erreur a probablement dit quelque chose comme ne peut pas convertir de 'SP avec [T = DerivedClass] à const SP & avec [T = BaseClass]' cette information supplémentaire est la moitié du chemin de la solution. –