Se dichiaro:
template <class T>
class MyClass
{
public:
void clear(void(*f)(T el));
}
E fin qui tutto ok, se dichiaro:
MyClass <int *> myclass;
void myfunction(int *el);
allora la chiamata:
myclass.clear(myfunction)
funziona tranquillamente.
Ora però sto creando un'altra classe contenitrice (chiamiamola
ExternalClass) che userà MyClass come oggetto di memorizzazione dei
dati, ed anche questa classe "esterna" ha una funzione membro chiamata
clear() che richiama la MyClass.clear().
A questo punto quindi alla MyClass.clear(void (*f)(T el)) dovrei
passare una funzione *membro* della classe esterna ExternalClass che
faccia la delete dei puntatori ricevuti (la funzione membro di
ExternalClass la chiamo per esempio fcleardata()), ma il compilatore
mi dice: No matching function for call MyClass<int *>::clear(void
(ExternalClass::*)(int *))
La funzione ExternalClass::clear() è dichiarata ed implementata come
void ExternalClass::fcleardata(int *).
Come posso procedere?
Mi trovo su Mac con XCode e compilatore g++ 4.2.1