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> *'
有誰看到什麼是錯我的第二個轉換過載? 由於