我正在收到一个我不明白的编译错误(MS VS 2008).在搞砸了很多个小时之后,这些都是模糊的,我觉得有一些非常明显的(非常愚蠢的)我失踪了.这是基本代码:
typedef int (C::*PFN)(int); struct MAP_ENTRY { int id; PFN pfn; }; class C { ... int Dispatch(int,int); MAP_ENTRY *pMap; ... }; int C::Dispatch(int id,int val) { for (MAP_ENTRY *p = pMap; p->id != 0; ++p) { if (p->id == id) return p->pfn(val); // <--- error here } return 0; }
编译器在箭头声称“术语不评估一个函数采用1个参数”.为什么不? PFN作为一个参数进行原型制作,MAP_ENTRY.pfn是一个PFN.我在这里缺少什么?