![]() |
Anzeige:
|
|
|||||||
| C/C++, Visual C++, Visual C++.NET Fragen und Antworten zu C/C++, Visual C++ und Visual C++.NET |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Gast
Beiträge: n/a
|
Hallo Leute,
ich versuche gerade eine Art "EventHandling" umzusetzen und gehe dabei folgendermaßen vor: Ich definiere einen Funktionszeiger à la Code:
typedef void (*PTR) (EventArgs args) Das Problem bei der Sache ist nun folgendes: Die ganze Geschichte funktioniert prima, solange es sich um statische Methoden bzw. "normale" C-Funktionen - d.h. ausserhalb von Klassen - dreht. In der Liste sollen aber auch Memberfunktionen anderer Klassen gespeichert werden können, und Sachen wie Code:
typedef void (Klasse::*PTR) (EventArgs args) Die einzige Alternative, die mir bis jetzt eingefallen ist - ohne Funktionszeiger - wäre so eine Art Action Listener aus Java nachzubauen. Würde zwar Funktionieren, gefällt mir aber weniger da immer alle Methoden implementiert werden müssen - können ja unter Umständen recht viele sein - auch wenn man eigentlich nur auf ein Ereignis reagieren will. Weiß hier jemand was oder hat eine Idee, wie das Problem anders (also ohne Funktionszeiger) gelöst werden könnte? Danke im Voraus. |
|
|
|
|
#2 (Direktlink) |
|
Gast
Beiträge: n/a
|
Hab gerade doch noch einen Beitrag in einem anderen Forum gefunden, Pointer auf C-Funktionen und auf Memberfunktionen sind demnach nicht kompatibel, werde mir also mit einer Art "ActionListener" helfen (Wie ich darauf gekommen bin, dass ich alle Methoden implementieren muss ist mir ein Rätsel...).
Eine Frage zu den Funktionszeigern hätte ich allerdings noch: Wenn ich in einer Basisklasse eine Funktionszeiger auf eine Memberfunktion in der Basisklasse erstelle, ist es dann irgendwie machbar, dass dieser Zeiger auch Methoden von geerbten Klassen annimmt, also in der Art: Code:
class A
{
public:
void (*A::PFN)(int);
};
class B : public A
{
public:
void function(int)
{
//machwas
}
}
int main()
{
B b = new B;
b->PFN = B::function;
}
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|