得到错误:不匹配operator [] in

时间:2013-05-03 10:49:40

标签: c++ android-ndk function-pointers

如上所述,我收到一个错误: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);

1 个答案:

答案 0 :(得分:2)

如果没有看到变量的声明,最可能的问题是:

  • mHbbtSMFnPtrs不是函数指针的二维数组(或类似容器),或
  • mCurrHbbtvStatehbbtvSMEvntsParam不是整数或无范围的枚举类型,因此不能用作数组索引。

如果你没有从分配线上得到任何错误,那么第二个更有可能。

如果您可以发布这些声明,那么我们可以看出是哪种情况。此外,您应该考虑使用可读的名称 - 这将使这样的问题更容易被发现。