在A.h:
class A
{
typedef void (A::*fp)();
void test1();
void test2();
A(int a);
}
在A.cppä¸æˆ‘有:
A::A(int a)
{
fp fpointers[] = {&A::test1,&A::test2};
fpointers[a]();
}
void A::test1()
{
//do something
}
void A::test2()
{
//do something
}
这是我所拥有的简化版本。但问题ä»ç„¶æœ‰æ•ˆã€‚从我谦逊的ç»åŽ†å’Œfpointers'æ˜¯ä½ å¦‚ä½•å®šä¹‰å’Œå£°æ˜Žä¸€ä¸ªå‡½æ•°æŒ‡é’ˆæ•°ç»„ã€‚æˆ‘é‡åˆ°è¡Œfpointers[a]();
的问题我收到æ¤é”™è¯¯ï¼š
  明显调用的括å·å‰é¢çš„表达å¼å¿…须具有   (指å‘)函数类型
我åšé”™äº†ä»€ä¹ˆï¼Ÿ
ç”案 0 :(得分:2)
è¯æ³•å°†æ˜¯
(this->*fpointers[a])();
å› ä¸ºä½ éœ€è¦å®žä¾‹ã€‚