std ::函数指针数组

时间:2018-01-19 21:08:35

标签: c++ function-pointers stdarray

我想在std::array内存储函数指针,但在尝试不同的方法之后,我仍然无法编译我的程序。

这是在编译之前不会抛出错误的版本。

namespace logic {
    class Chance : public Field {
        std::array<void(logic::Chance::*)(), 18> m_redChances;
    public:
        Chance(ChanceType type);
        void redChance1();
        void redChance2();
        ...
        void redChance18();
    };
}

logic::Chance::Chance(ChanceType type) 
    : Field(false), m_type(type) 
{
    m_redChances[0] = redChance1;
    m_redChances[1] = redChance2;
    ....
    m_redChances[17] = redChance18;
}

它给了我

  

非标准语法;使用'&amp;'创建指向成员的指针

试图做这样的事情

m_redChances[0] = &redChance1;

结束

  

'&amp;':对绑定成员函数表达式的非法操作

试图像我这样声明我的数组

std::array<void(*)(), 18> m_redChances;
  

类型为“void(logic :: Chance :: )()”的值不能分配给类型为“void()()”的实体

编辑: 所以在实现它之后: m_redChances[0] = &Chance::redChance1;它有效。我怎样才能实际调用这个函数(如果重要的话,我是从另一个成员函数调用它的。)

我尝试了各种各样的东西:

void logic::Chance::activate(logic::Player& player){
    m_redChances[0];
    *m_redChances[0];       
    m_redChances[0]();
    (*m_redChances[0])();
}

在我编译之前,只有第一行没有被强调并标记为错误,但它并没有调用我的函数。那怎么能实现呢?

0 个答案:

没有答案