gpt4 book ai didi

c++ - 为什么在 boost::ptr_list 上调用 front() 时会出错?

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:16 25 4
gpt4 key购买 nike

我有一个虚拟类 basic_action。类 sippeers 继承类 basic_action。为了存储 sippeers 类的实例,我使用了 boost::ptr_list。这是代码示例:

boost::ptr_list<basic_action> ActionsList;
sippeers spclass;
ActionsList.push_back(&spclass);
basic_action *sp = ActionsList.front();

在这里,我创建了一个 prt_list 实例,其中包含指向我的 basic_action 类实例的指针。接下来我创建了我的 sippeers 类的新实例。接下来,我将指向 sippeers 类的指针插入到 ptr_list 中。

最后一个字符串失败。

Cannot convert from 'basic_action' to 'basic_action *'.

但是里面有一个basic_action *,而不是basic_action!

最佳答案

boost::ptr_list::front() 返回对模板化类型的引用,而不是指针。

所以在这种情况下,它返回一个 basic_action&

参见文档 here对于 ptr_sequence_adapterptr_list 是从中派生的。

所以你的代码应该是:

boost::ptr_list<basic_action> ActionsList;
sippeers spclass;
ActionsList.push_back(&spclass);
basic_action &sp = ActionsList.front();

关于c++ - 为什么在 boost::ptr_list 上调用 front() 时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5619857/

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