0

如上所述,我收到一个错误:mHbbtSMFnPtrs[mCurrHbbtvState][hbbtvSMEvntsParam](hbbtvSMEvents, hbbtvSMEvntsParam) 中的 operator[] 不匹配;

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);
4

1 回答 1

2

在没有看到变量声明的情况下,最可能的问题是:

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

如果您没有从分配行中得到任何错误,那么第二个更有可能。

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

于 2013-05-03T11:00:41.393 回答