Vector Par wskaźników funkcji - problem

0

Mam taki problem... Mam pewien Vector... o taki:

std::vector< std::pair <Key, void (Game::*)()> > options;

I teraz mam pewien problem... W jaki sposób wywołać "n-tą" funkcję z tego Vectora? :/ Próbowałem już tak i siak i nie wychodzi. Nie miałem do czynienia wcześniej ze wskaźnikami do funkcji, stąd brak obycia. Próbowałem np tak:

options[n].second();

...ale nic z tego

Z góry dzięki za rychłą pomoc ;)

0

Wydawało się, że poprawnym rozw. problemu jest poniższy kod:

options[n].second;

... jednak ten mimo, iż się kompiluje, to nie przynosi efektów... Tzn n-ta metoda nie jest wykonywana... Zatem problem nadal otwarty... licze na Waszą pomoc

0

Możesz pokazać kod (przynajmniej kawałek)?
Wydaje mi się, że skoro jest to wektor wskaźników, to musisz wyłuskać z niego informacje poprzez '*'.

1

@MJay: to nie jest wektor wskaźników

@krzycho_666: zauważ, że nie chcesz użyć zwykłego wskaźnika do funkcji(wtedy rzeczywiście wywołanie wyglądałoby tak: options[n].second(); ), ale wskaźnika do metody klasy. Zwykła funkcja od metody(nie statycznej) różni się dość znacząco(choćby konwencją wykonania i kwestią wskaźnika this).
Z powodu tych różnic zupełnie inaczej wygląda wywoływanie funkcji czy metody wykorzystując wskaźnik. Dla zwykłej funkcji jest to po prostu wsk();, ale już dla metody to (obiekt_klasy.*wsk)(); Metoda niestatyczna ZAWSZE musi być wywoływana na rzecz jakiegoś obiektu. To tyle jeżeli chodzi o wyjaśnienie co się dzieje i dlaczego Twoje wywołanie powinno wyglądać tak:

(obiekt_klasy_game.*options[n].second)();
0

Ha! ;D Jesteś dobry Kolego ;) Nie dość, że rozwiązanie problemu jak najbardziej poprawne, to w dodatku z doskonałym przypomnieniem co i jak ;)
Głupi jestem, że o tym nie pomyślałem... Dziękuję raz jeszcze =]

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