gpt4 book ai didi

c++ - 双端队列 emplace_back 指向对象的新指针

转载 作者:行者123 更新时间:2023-11-28 05:35:32 26 4
gpt4 key购买 nike

我正在创建一个指向新对象的新指针,并立即将 push_front 放入双端队列。我想改为使用 emplace_front,但遇到编译器错误。

我的对象构造函数需要 1 个字符串参数。

std::deque<NetPacket*> q_IncomingPackets;

q_IncomingPackets.push_back(new NetPacket(std::string(uncompressed_data, retVal))));
q_IncomingPackets.emplace_back(std::string(uncompressed_data, retVal));

根据其他网站的引用资料,我认为我可以简单地将 push_back 换成 emplace_back 但出现以下错误:

Error   C2440   'initializing': cannot convert from 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>' to 'PeerNet::NetPacket *' PeerNet \vc\include\xmemory0    737

引用文献没有谈论在创建指向对象的新指针时使用 emplace,只有具体对象。 cppreference.com cplusplus.com

最佳答案

std::deque::emplace_back期待 Args&&... args build value_type ,这里是 NetPacket* .

没有办法构造NetPacket*来自 std::string ,这就是编译器错误提示的原因。

由于您的值类型是 NetPacket* (它是一个原始指针),push_back 之间没有太大区别。和 emplace_back .

关于c++ - 双端队列 emplace_back 指向对象的新指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38388221/

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