我正在尝试使用以下两个值初始化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
答案 0 :(得分:4)
您需要使用operator&
来获取指向成员函数的指针。 e.g。
std::vector<opcodeTableE> opcodetable{
{0x00E0, 0xFFFF, &chipCpu::clearScreen},
{0x00EE, 0xFFFF, &chipCpu::returnFromSub}
};
BTW:operator&
仅在获取指向非成员函数或静态成员函数的指针时是可选的,因为函数到指针的隐式转换。