У меня есть класс с массивом указателей на методы класса. Однако в классе, когда я пытаюсь вызвать одну из функций в массиве, я получаю сообщение об ошибке. Вот соответствующий код:
class MyClass
{
typedef void(MyClass::*FunctionPointer)(size_t *i);
void func1(size_t *i) { }
void func2(size_t *i) { }
void func3(size_t *i) { }
void func4(size_t *i) { }
FunctionPointer myFuncs[4] = { func1, func2, func3, func4 };
const std::string funcList[4] = { "FUNC1", "FUNC2", "FUNC3", "FUNC4" };
void doFunc(std::string in)
{
size_t *j = 0;
for (size_t i = 0; i < 4; ++i)
{
if (in == funcList[i]) { this->myFuncs[i](j); }
}
}
};
Я попытался опустить "this->", а также "this -> *", и ничего не работает. Я получаю сообщение об ошибке: «выражение перед круглыми скобками видимого вызова должно иметь (указатель на) тип функции». Что согласно inte rnet означает, что я пытаюсь вызвать что-то, что не определено как функция. Но я уверен, что я есть? Спасибо