Fehler bei Nutzung von Member Templates
-
Ich habe folgendes Problem:
Bei der Implementierung ein SmartPointer Klasse, will ich natürlich auch
den operator= überladen, aber als member template (um auch Polymorphie zu
ermöglichen). Leider wird mein selbst definierter operator= aber nie gerufen.
Ich benutze den VC++ 6.0
Da habe ich schon einiges zu Abweichungen vom Standard gehört. Vielleicht kann mir ja jemand weiterhelfen. Nachfolgend das betreffende Codefragment:template <typename T> class CAutoPtr { public: T* pData; int* pRef; // reference count on pData template <typename U> CAutoPtr& operator=(const CAutoPtr<U>& src) { if(pData == src.pData) // quasi self assignment return *this; --(*pRef); if( (*pRef) == 0) { if(pData) delete pData; delete pRef; } pData = src.pData; pRef = src.pRef; ++(*pRef); return *this; } };
-
Du musst den "normalen" op= ebenfalls implementieren, also
CAutoPtr& operator=(const CAutoPtr& src)