Man kann das schon machen, allerdings ist das in C++ wenig hilfreich.
Du kannst den Funktionspointer nicht so machen
void* callBackFunction(void *arg);
Denn der Funktionspointer soll ja nicht auf eine freistehende Funktion
zeigen, sondern auf eine Memberfunktion. Eine Memberfunktion gehört aber
zu einer bestimmten Klasse, daher muss in der Deklaration des
Funtkionspointers auch der Name der Klasse auftauchen.
http://www.parashift.com/c++-faq/pointers-to-members.html
2-tens hilft dir der Funktionspointer nicht viel. Denn du brauchst ja
auch immer ein Objekt, für das eine Funktion aufgerufen werden soll. Ein
Funktionspointer alleine speichert diese Information aber nicht.
D.h. Member-Callbackpointer sind in C++ meistens nicht das was man will.
Will man unbedingt mit Funktionspointern arbeiten, dann geht man
meistens über eine freistehende Funktion (also keine Memberfunktion) und
aus dieser Funktion heraus ruft man dann die Memberfunktion für ein
spezifisches Objekt auf.
Oft aber ist der ganze Ansatz mit Callbackpointer schon der falsche Weg.
Was man statt dessen macht, ist eine Basisklasse mit einer virtuellen
Funktion, die vom Caller aufgerufen wird. Die eigentliche Callbackklasse
leitet sich dann von dieser Klasse ab und implementiert ihrerseits dann
diese virtuelle Funktion. Der Caller bekommt dann einen Pointer auf so
ein Objekt und ruft mit diesem Objekt-Pointer die Funktion auf - der
'virtual' Mechanismus sorgt dann dafür, dass die richtige Funktion
aufgerufen wird.
Viele Problemstellungen löst man in C++ dadurch, dass man in der
Klassenhierarchie eine Zwischenklasse einzieht, die einfach nur als
gemeinsamer Ankerpunkt dient um dort eine virtuelle Funktion in die
Hierarchie einzubringen, von der man dann weiter arbeiten kann.