Funktionszeiger typedef und Klassen
-
Hi Leute ich habe mal ne Frage,
ich möchte ein Array, bzw einen Vector anlegen das Funktionspointer enthält, sind sogar void funktionen mit nur einem Parameter.
Mein Problem ist nun folgendes:
Ich möchte einen eine Funktion habenaddEventListener(Object* obj,Event* type,funktionspointer* foo);die funktion ist von der Form:
void fooName (Event* e){}, jedoch kann sich der Name ändern.
Sinn und zweck des ganzen ist eine modifizierte art des Observer Patterns, indem es möglich sein soll, Bestimmte Events mit einer Funktion zu verknüpfen.
Besten Gruß und Danke an alle fürs Lesen
-
Wenn ich dich jetzt richtig verstanden habe, suchst du die Funktionszeiger Typdefinition?
Voilàtypedef void (*funktionspointer)(Event* e);Wenn du jedoch Klassenfunktionen benötigst (in Bezug auf deine Überschrift), dann muß auch noch der Klassenname dort rein:
typedef void (Klasse::*funktionspointer)(Event* e);
-
typedef void (Klasse::*funktionspointer)(Event* e);das ist mir klar.
Ich versuch mich nochmal anders Auszudrücken.
Was ich suche ist eine art allgemeiner Typ für funktionen der form:void foo (Event* e)sodass ich mir eine Funktion definieren kann,
welche alle Funktionen nimmt, die von der Formvoid foo (Event* e)sind.
Für (Klasse::fp)(Event*e), müsste ich die Funktion schon kennen.
Ich gebe einfach einmal ein BSP für mein Problem :void foo1(Event* e){}; void foo1 (Event* e){}; obj.addListener(this,Event::Changed,&foo1)Damit das möglich ist muss die Funktion add welche ja zu einem anderen Object gehört ja von der Form:
void add(Object* obj,Event* e,fooPoiner* p)sein!
Wie müsste ich hier nun den fooPointer definieren?
Ich möchte den Funktionsaufruf sozusagen in ein anderes Object verschieben.
Sodass er immer alle Funktionen schluckt die void foo (Event* e)
-
Hab mein Problem danke freundlicher Unterstützung lösen können