c++ - 如何将 'const Obj' 插入 std::list<T*>?

标签 c++ list constants containers std

我写了一个函数

    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/

相关文章:

C++随机固定字符串集

c++ - C++库中有没有将字符串转换为算术运算的函数?

C++ - 递归结构 - 这可能吗?

list - Haskell 函数对输入列表进行排序,然后对排序列表进行处理

Python 从三个列表中创建一个特定的字典

c++ - 为什么此 C++ 代码中的构造函数不明确,我该如何解决?

python - 如何使用列表快速更新大字典?

c++ - 与 const 相关的错误

c++ - 使用基类静态常量变量构造基类,我可以这样做吗?

c++ - operator== 改变其操作数是不好的做法吗?