【问题标题】:Pass a vector of unique_ptr to function, const reference将 unique_ptr 的向量传递给函数,常量引用
【发布时间】:2016-03-18 02:29:46
【问题描述】:

我通常传递一个包含原始指针的向量,如下所示:

someFunc(const std::vector<MyClass*>& classList){..}

我想知道你是否可以像这样对 unique_ptr 做同样的事情:

 someFunc(const std::vector<std::unique_ptr<MyClass>>& classList){..}

?它的意思是一样的吗?,即只读。

【问题讨论】:

    标签: c++ c++11 smart-pointers stdvector


    【解决方案1】:

    是的,你可以。不,这并不意味着同一件事:std::unique_ptr 表示指针拥有的资源。通用原始指针可以有许多其他语义。

    关于 const 的正确性,使用迭代器或 operator[] 访问向量的元素将产生对 std::unique_ptrs 的常量引用。使用const std::unique_ptr&lt;T&gt; 时,不能重新分配指针,而可以修改指向的T 对象。

    【讨论】:

    • "指针不能重新赋值,而指向的 T 对象可以修改。".所以,它应该是这样的: someFunc(const std::vector<:unique_ptr myclass>>& classList){..} ?
    • @karl88:嗯,这就像std::vector&lt;const MyClass*&gt;,这也不是问题的作用。
    • @karl88 是的,你需要std::unique_ptr&lt;T const&gt; 来防止指向的对象被修改。
    猜你喜欢
    • 2014-03-16
    • 2015-08-07
    • 1970-01-01
    • 2012-01-07
    • 2012-03-30
    • 2011-12-02
    • 2018-10-15
    • 2013-06-04
    • 1970-01-01
    相关资源
    最近更新 更多