Hallo zusammen
Wie der Titel erwähnt habe ich eine kleine Denkblockade bei einer meiner Templateklassen zur automatischen Speicherverwaltung.
Dieser Code lässt sich nicht compilieren. Der Compiler meldet folgendes Problem:
Warum können nicht zwei Zeiger auf ihre Gleichheit überprüft werden? Muss ich das wirklich in einen Zeiger wie (void*) casten um den Vergleich durchzuführen?
Irgendwie leuchtet das mir nicht ein...
Gruss
Cromon
Wie der Titel erwähnt habe ich eine kleine Denkblockade bei einer meiner Templateklassen zur automatischen Speicherverwaltung.
Code:
template<class T>
template<typename R>
GCP<T>::GCP(GCP<R>& ref)
{
if(&ref == this)
return;
this->m_pMemory = (T*)ref.GetPtr();
this->m_arraySize = ref.GetArraySize();
if(m_pMemory)
GC.IncRev(this);
}
Dieser Code lässt sich nicht compilieren. Der Compiler meldet folgendes Problem:
Code:
error C2446: '==' : no conversion from 'GCP<T> *const ' to 'GCP<T> *'
Warum können nicht zwei Zeiger auf ihre Gleichheit überprüft werden? Muss ich das wirklich in einen Zeiger wie (void*) casten um den Vergleich durchzuführen?
Irgendwie leuchtet das mir nicht ein...
Gruss
Cromon