Wywołanie funkcji ze wskaźnika wewnątrz klasy

0

Witam.
Próbuję wywołać funkcję którą pobieram z tablicy wskaźników do funkcji, i wywala mi błąd:
"Error: expression preceding parentheses of apparent call must have (pointer-to) function type"

 
class Class
{
	typedef void (Class::*PtrType) (void);

	PtrType funcPtr[2];


	Class()
	{
		funcPtr[0] = &Class::MakeA;
		funcPtr[1] = &Class::MakeB;

		PtrType tmpFuncPtr = funcPtr[1];

		tmpFuncPtr(); // Tutaj IntelliSense podkreśla mi błąd
	}

	void Class::MakeA ()
	{

	}

	void Class::MakeB ()
	{

	}
};

Próbowałem jakoś zrzutować wskaźnik do funkcji na typ void (*) (void) ale to nic nie dało.

2

Skoro używasz wskaźnika do funkcji składowej musisz pokazać na rzecz jakiego obiektu chcesz wywołać tę funkcję. Np:

(this->*tmpFuncPtr)();

Ze względu na priorytet operatorów nawias jest konieczny.

0

Dzięki, działa.
No tak, przecież jestem w klasie.
Ale to tak dziwnie mając zmienną (wskaźnik do funkcji) lokalną w metodzie i wywołuje się ją z użyciem this'a.
Temat do zamknięcia

0

Nie musisz ją na rzecz this'a wywoływać.

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