J'ai ma propre classe SmartPointer.Problème de surcharge de l'opérateur de conversion C++
Il y a des cas où SmartPtr contiennent une classe qui inherite d'une classe de base, et je voudrais convertir SmartPtr<ClassX> into SmartPtr<BaseClassOfClassX>;
Je suis en train de surcharger l'opérateur de conversion SmartPtr pour le faire.
Il fonctionne très bien pour la classe themself, tels que:
template<class newType>
operator SmartPtr<newType>() const
{
return SmartPtr<newType>((SmartPtr<newType>*)this);
}
mais pas pour pointeur vers la classe, j'ai essayé ce qui suit, et il ne fait jamais appel et obtenir l'erreur suivante:
template<class newType>
operator SmartPtr<newType>*() const
{
return static_cast<SmartPtr<newType>*>(this);
}
code simple pour obtenir l'erreur:
SmartPtr<ClassX> test(pClassX);
SmartPtr<BaseClassOfClassX>* ob = &test;
ERROR:
cannot convert from 'SmartPtr<T> *' to 'SmartPtr<T> *'
quelqu'un voit ce qui ne va pas avec mon deuxième surcharge de conversion? Merci