Jak wywołać wskaźnik na metodę?

0
class Engine3D
{
   public:
	   Engine3D(IDirect3DDevice9* pDev_);
	   ~Engine3D();

	   RetCode (Engine3D::*Setup)();
	   void (Engine3D::*Display)(float, const char*);

	   RetCode SetupTest();
	   void DisplayTest(float timeDelta, const char* FPS=NULL);

a w niej wskaźniki do metod Setup i Display które w konstruktorze klasy przypisuję w ten sposób:

	Display = &Engine3D::DisplayTest;
	Setup = &Engine3D::SetupTest;

no i wszystko się kompiluje. Mam drugą klase GUI i w niej zadeklarowany wskaźnik na klasę Engine3D:

Engine3D* e3D;

No i pytanie, jak wywołać teraz metodę któa mieści się we wskaźnikach Setup i Display??? Próbowałem kilkanaście sposobów i się nie udało. Już nie mam pomysłu.

0

Najbliższe prawdy jest wywołanie jak niżej ale kompilator się gubi i pierniczy coś o klasie GUI:

RetCode GUI::Setup()
{	
	return (e3D->*Setup)();
}

1>f:\gui.cpp(441) : error C3867: 'GUI::Setup': function call missing argument list; use '&GUI::Setup' to create a pointer to member
1>f:\gui.cpp(441) : error C2440: 'newline' : cannot convert from 'Engine3D ' to 'GUI '
1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
1>f:\gui.cpp(441) : error C2647: '->
' : cannot dereference a 'RetCode (__thiscall GUI::
)(void)' on a 'Engine3D *'

0

Najśmieszniejsze jest to że we wszystkich tutorialach pisza ,że takie coś k... powinno zadziałać:

RetCode GUI::Setup2() //tu sobie przerobiłem nazwe metody
{	
	return (e3D->*Setup)();
}

i wywala
error C2065: 'Setup' : undeclared identifier
ch.. wie o co chodzi chociaż mówią że po ch... to ma krasnal brodę albo po ch... to kaczor w kałuży stoi.:/

1

Problem rozwiązany, jakby kto kiedy szukał to kompilator ciągnie takie coś:

(e3D->*(e3D->Setup))();

1 użytkowników online, w tym zalogowanych: 0, gości: 1