gpt4 book ai didi

c++ - Boost::带有共享指针的侵入式列表

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

所以我正在使用 FastDelegate<> 和 boost 库编写一个事件处理系统。我需要设置一个指向事件数据的共享指针队列以及一个 FastDelegate> 列表供听众使用。那么问题来了。

侵入式列表和队列不允许 shared_ptr 甚至常量引用,这使得我的代码导致编译时错误。不管怎样,我可以做到这一点吗?

将共享 ptr 传递给代表似乎是最安全的方式,这样事件就会一直存在,直到每个人都真正完成它。

最佳答案

Q. Intrusive list and queue don't allow shared_ptr

没问题:

Live On Coliru

#include <boost/intrusive/list.hpp>
#include <boost/shared_ptr.hpp>

struct Event {};

struct Node : boost::intrusive::list_base_hook<> {
boost::shared_ptr<Event> event { new Event };
};

typedef boost::intrusive::list<Node> event_list;

int main() {
std::vector<Node> nodes(10);

event_list pending;
pending.push_back(nodes[3]);
pending.push_back(nodes[7]);
}

根据您预期的事实 (?) intrusive::list<T>T = shared_ptr<...>工作告诉我你想要一个简单的 std::list (或者只是一个 std::vector )。

or even constant references

常量引用也没有问题。你想使用 shared_ptr<const Event> 吗? ?因为如果您要与多方共享事件,这是一个不错的选择。

关于c++ - Boost::带有共享指针的侵入式列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28420498/

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