遇到错误:没有匹配操作符[]
Getting an error: no match for operator[] in
如上所述,我得到一个错误:在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
不是函数指针的二维数组(或类似的容器),或者 -
mCurrHbbtvState
或hbbtvSMEvntsParam
不是整数或无作用域枚举类型,因此不能用作数组索引。
如果你没有从赋值行得到任何错误,那么第二个更有可能。
如果你可以张贴这些声明,然后我们可以看到是哪种情况。此外,您应该考虑使用可读的名称——这将使此类问题更容易被发现。
相关文章:
- 在重载的全局new操作符中使用静态对象会导致核心转储运行时错误
- 无异常的c++操作符重载错误检查
- Assert()函数抛出一个错误——操作符有问题
- c++操作符string和char*导致歧义错误
- 模板结构中的友元操作符引发重定义错误
- 指针上的操作符=可能导致mac上的分段错误
- 错误:没有找到接受右QUdpSocket的操作符
- 内部编译器错误-开关表达式中的模板化转换操作符
- c++中重载*操作符编译错误
- 重载操作符类型错误
- 赋值操作符重载:错误处理场景
- const_iterator上的间接操作符错误
- 使用重载复合赋值操作符时的运行时错误
- 类型转换操作符重载——Visual studio 2013内部错误
- 派生类操作符=错误
- VS 2015更新3删除拷贝赋值操作符错误
- Boost c++ Phoenix用户定义参数的下标操作符[]错误
- 数字字面值操作符错误
- c++中重载ostream操作符错误
- 我对这个赋值操作符错误的假设是正确的吗?