У меня есть свой собственный класс SmartPointer.
В некоторых случаях SmartPtr содержит класс, который наследуется от базового класса, и я хотел бы преобразовать SmartPtr<ClassX> into SmartPtr<BaseClassOfClassX>;
Я пытаюсьДля этого перегрузите оператор преобразования SmartPtr.
Он отлично работает для самого класса, например:
template<class newType>
operator SmartPtr<newType>() const
{
return SmartPtr<newType>((SmartPtr<newType>*)this);
}
, но не для указателя на класс, я попробовал следующее, ион никогда не получает вызов и выдает следующую ошибку:
template<class newType>
operator SmartPtr<newType>*() const
{
return static_cast<SmartPtr<newType>*>(this);
}
Простой код для получения ошибки:
SmartPtr<ClassX> test(pClassX);
SmartPtr<BaseClassOfClassX>* ob = &test;
ERROR:
cannot convert from 'SmartPtr<T> *' to 'SmartPtr<T> *'
Кто-нибудь видит, что не так с моей второй перегрузкой преобразования?Спасибо