000
30.06.2005, 12:59 Uhr
~DarthDevilous
Gast
|
Ich hab folgendes problem: In meiner Klassenhierarchie hat jede Klasse ihre eigene Kombination von beliebigen "Zuständen". Mit jedem Zustand sind zwei Funktionen verbunden, eines für das Eintreten und eines für das Verlassen des Zustandes. Diese Funktionen sind natürlich Member-Funktionen der jeweiligen Klassen. Jetzt muss aber eine Liste der Zustände erstellt werden, damit auf diese überhaupt zugregriffen werden kann. Wie ist es nun möglich, mittels dieser Liste Zeiger zu den verschieden Funktionen zu speichern und mittels dieser Zeiger dann die Funktionen für jeweilige Instanzen dieser Klasse aufzurufen? Zum verständnis ein bisschen Pseudo-Code:
C++: |
struct Status { const char *lpszStatusName, thiscall void(*lpfnOnEnterStatus)(void), // <-- Was hier, thiscall gibt's ja nicht thiscall void(*lpfnOnLeaveStatus)(void) }; static Status CMyClass::StatusList[] = { { "StatusName1", CMyClass::OnEnterStatus1, CMyClass::OnLeaveStatus1 }, { "StatusName2", CMyClass::OnEnterStatus2, CMyClass::OnLeaveStatus2 }, { NULL, NULL, NULL } };
void GotoStatus(CSomeClass *pClass, const char *lpszStatusName) { Status *pStatus = &pClass->StatusList[0]; for (int i=0; pStatus->lpszStatusName; pStatus=&pClass->StatusList[i++]) { if (strcmp(pStatus->lpszStatusName, lpszStatusName) == 0) { pClass->pCurrentStatus->lpfnOnLeaveStatus(); // <-- Was hier? pCurrentStatus = pStatus; pClass->pCurrentStatus->lpfnOnEnterStatus(); // <-- Und hier? break; } } }
|
Bearbeitung von Windalf: |
tags gefixt...
|
Dieser Post wurde am 30.06.2005 um 13:07 Uhr von Windalf editiert. |