FuncPtrTab to Method - PullRequest
       3

FuncPtrTab to Method

0 голосов
/ 19 февраля 2011

Я с трудом пытаюсь заставить эту работу.Я пытаюсь выполнить метод, хранящийся на вкладке указателя метода.

Вот мой пример:

void class1::fct1();
void Class1::fct2();

void Class1::manageFct()
{
    static const void (*ptrFuncTab)[] = {
        &Class1::fct1,
        &Class1::fct2
    };
    opCode = 0;
    ptrFunctab[opCode](); //==> call Cpu::fct1()
}

Я понимаю, что мне нужно поместить экземпляр, в который я хочу применитьфкт указал.Но как ?Кто-нибудь знает, что я делаю не так?

Спасибо, Кува

Ответы [ 2 ]

0 голосов
/ 19 февраля 2011

После того, как вы отредактируете, как сказал Наваз, вы вызываете функцию в таблице следующим образом:

Class1* ptr = new Class1();
(ptr->*ptrFuncTab[opCode])();

для указателя, и вот так:

Class1  ref;
(ref.*ptrFuncTab[opCode])();

для справки.

0 голосов
/ 19 февраля 2011

Сделайте это:

typedef void (Class1::*MemFn)();

static const MemFn ptrFuncTab[] = {
    &Class1::fct1,
    &Class1::fct2
};

То, что вы использовали, называется указатель на функцию ; то, что я использую, называется указатель на функцию-член . И это не одно и то же.

Используйте эту таблицу функций как:

Class1 c;
(c.*ptrFuncTab[0])();

Или, если вы хотите использовать указатель, тогда

Class1 *pC = new Class1();
(pC->*ptrFuncTab[0])();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...