Имеем класс для работы с модемом SIM300. В данном классе есть методы вида SIM300::AT_XXX(). Имеем список enum с индексами методов, вид eAT_XXX.
В определенный момент нужно запускать метод установив соответствующий индекс. Можно сделать через switch-case так. switch( eInd ) { case eAT_XXX: AT_XXX(); break; ... }
Но так долго, нужно быстрее. Я попытался сделать массив указателей на функцию.
static void (__code __interwork SIM300::*pCmdFunc[eCMD_QNT] )() = { SIM300::AT_CPOWON, ... }
Компилятор не ругается. т.е. вроде как все норм. Но когда осуществляю вызов функции в одном из методов класса SIM300:
(pCmdFunc[eCmdInd])();
то компилятор выдает ошибку
Error[Pe109]: expression must have (pointer-to-) function type
Я использовал раньше массив указателей на функции, но на обычные функции, а не на методы класса. Там все работало.
Есть у кого-нибудь идеи? Может как-то по другому можно решить данную проблему?
|