遇到错误:没有匹配操作符[]

Getting an error: no match for operator[] in

本文关键字:操作符 错误 遇到      更新时间:2023-10-16

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

如果看不到变量的声明,最可能出现的问题是:

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

如果你没有从赋值行得到任何错误,那么第二个更有可能。

如果你可以张贴这些声明,然后我们可以看到是哪种情况。此外,您应该考虑使用可读的名称——这将使此类问题更容易被发现。