3
我有我自己的SmartPointer类。C++转换运算符超载问题
在有些情况下的SmartPtr包含了从基类inherite类的情况下,我想转换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> *'
有谁看到什么是错我的第二个转换过载? 由于