gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 01:37:30 25 4
gpt4 key购买 nike

我正在尝试使用 2 个值初始化结构 opcodeTable 的 vector ,如下所示:

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

最佳答案

您需要使用operator& 来获取指向成员函数的指针。例如

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

LIVE

顺便说一句:由于函数到指针的隐式转换,operator& 仅在获取指向非成员函数或静态成员函数的指针时才可选。

关于c++ - 使用struct初始化c++ vector 时的构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49558697/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com