如上所述,我收到一个错误:mHbbtSMFnPtrs中没有匹配operator [] [mCurrHbbtvState] [hbbtvSMEvntsParam](hbbtvSMEvents,hbbtvSMEvntsParam);
typedef int (*HBBTVSMFnPtr)(int hbbtvSMEvent, HBBTVSMEvntParam smEvntParam );
static int HBBTVSMErrorHandler(int hbbtvSMEvent, HBBTVSMEvntParam smEvntParam);
声明:
static HBBTVSMFnPtr mHbbtSMFnPtrs[HBBTV_SM_STATE_MAXSTATES][HBBTV_SM_EVNT_MAXEVNTS];
static int mCurrHbbtvState = HBBTV_SM_STATE_TURNEDOFF;
typedef struct
{
char* param;
int paramLength;
}HBBTVSMEvntParam;
这是作业:
mHbbtSMFnPtrs[loopVar1][loopVar2] = HBBTVSMErrorHandler;
并像这样调用它:
int a = mHbbtSMFnPtrs[mCurrHbbtvState][hbbtvSMEvntsParam](hbbtvSMEvents, hbbtvSMEvntsParam);
答案 0 :(得分:2)
如果没有看到变量的声明,最可能的问题是:
mHbbtSMFnPtrs
不是函数指针的二维数组(或类似容器),或mCurrHbbtvState
或hbbtvSMEvntsParam
不是整数或无范围的枚举类型,因此不能用作数组索引。如果你没有从分配线上得到任何错误,那么第二个更有可能。
如果您可以发布这些声明,那么我们可以看出是哪种情况。此外,您应该考虑使用可读的名称 - 这将使这样的问题更容易被发现。