나는 내 자신의 SmartPointer 클래스가 있습니다.C++ 변환 연산자 오버로드 문제
는 SmartPtr는 기본 클래스에서 inherite 클래스를 포함하는 경우가 있으며, 나는이 작업을 수행 할 수있는 SmartPtr 변환 연산자를 오버로드하려고 SmartPtr<ClassX> into SmartPtr<BaseClassOfClassX>;
변환하고 싶습니다.
그것은 같은 클래스 스스로가,을 위해 잘 작동 :
template<class newType>
operator SmartPtr<newType>() const
{
return SmartPtr<newType>((SmartPtr<newType>*)this);
}
하지만 클래스에 대한 포인터, 나는 다음을 시도하지, 그것은 전화를 가져옵니다 결코 다음과 같은 오류 얻을 :
을SmartPtr<ClassX> test(pClassX);
SmartPtr<BaseClassOfClassX>* ob = &test;
ERROR:
cannot convert from 'SmartPtr<T> *' to 'SmartPtr<T> *'
이 사람이 나의 두 번째 잘못이 무엇인지 볼 수 있습니까 :
template<class newType>
operator SmartPtr<newType>*() const
{
return static_cast<SmartPtr<newType>*>(this);
}
간단한 코드 오류를 얻을 수 있습니다 전환 과부하? 감사
은 C++ 표준에서