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)
    

Anmelden zum Antworten