我写了一个函数
void addAnything(T const &obj)
{
...
m_list.push_front(obj); // - line returns C2664 - list is initialized by std::list<T*> m_list
...
}
我的问题是从“T *const”中的“const T”转换。我需要将它插入到这个列表中... =/任何将元素插入到 std::list 中的方法都需要“const T& x”。 有什么办法可以在我的列表中插入一个 const 项并保留 addAnything() 的参数? 也许通过调整 m_list?
感谢任何建议!
最佳答案
你有一个 const
对象,而您正试图将其插入非 const
的容器中指向非 const
的指针对象。我假设你打算使用 &obj
,但即便如此,这也行不通:如果obj
怎么办?是临时的?您需要制作 obj
一个T&
,或复制 obj
(可能使用 new
)并推送它的地址。
请注意,当您有一个 T*
的容器时,并不总是很清楚谁拥有 T
在里面。除非您明确不希望容器获得所有权(在这种情况下,推送 new
是个坏主意),您可能需要使用 boost::ptr_list<T>
.
关于c++ - 如何将 'const Obj' 插入 std::list<T*>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129027/