使用struct初始化c ++向量时的构造函数错误

时间:2018-03-29 14:28:23

标签: c++ vector struct c++14

我正在尝试使用以下两个值初始化struct opcodeTable的向量:

struct opcodeTableE {
        uint16_t opcode;
        uint16_t mask;
        void (chipCpu::*instruction)(uint16_t);
};

std::vector<opcodeTableE> opcodetable{
        {0x00E0, 0xFFFF, chipCpu::clearScreen},
        {0x00EE, 0xFFFF, chipCpu::returnFromSub}
};

但是我收到以下错误:

no instance of constructor "std::vector<_Tp, _Alloc>::vector [with _Tp=chipCpu::opcodeTableE, _Alloc=std::allocator<chipCpu::opcodeTableE>]" matches the argument list -- argument types are: ({...}, {...})

注意:我在使用C ++ 14

1 个答案:

答案 0 :(得分:4)

您需要使用operator&来获取指向成员函数的指针。 e.g。

std::vector<opcodeTableE> opcodetable{
        {0x00E0, 0xFFFF, &chipCpu::clearScreen},
        {0x00EE, 0xFFFF, &chipCpu::returnFromSub}
};

LIVE

BTW:operator&仅在获取指向非成员函数或静态成员函数的指针时是可选的,因为函数到指针的隐式转换。