æˆå‘˜å‡½æ•°æŒ‡é’ˆæ•°ç»„

时间:2016-12-07 18:34:24

标签: c++ arrays visual-studio pointers

在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]();的问题我收到此错误:

  明显调用的括å·å‰é¢çš„

表达å¼å¿…须具有   (指å‘)函数类型

我åšé”™äº†ä»€ä¹ˆï¼Ÿ

1 个答案:

答案 0 :(得分:2)

语法将是

(this->*fpointers[a])();

因为你需è¦å®žä¾‹ã€‚