C ++ - 返回const unique_ptr

时间:2017-07-24 11:44:08

标签: c++ c++11

我想知道为什么我在编译时遇到错误:

const std::unique_ptr<int> get() { 
    return std::make_unique<int>(10);
}

int main() { 

    const std::unique_ptr<int> value = get();

    return EXIT_SUCCESS;
}

我收到以下错误:

main.cpp: In function ‘int main()’:
main.cpp:10:44: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]’
     const std::unique_ptr<int> value = get();

当我从const签名中删除get时,它会正确编译。

有没有办法返回常量unique_ptr?

1 个答案:

答案 0 :(得分:53)

因为unique_ptr是常量,所以只能复制它。并且不允许复制unique_ptr(否则它不会是&#34;唯一&#34;)。

如果指针指向的数据应该是常量,那么请改用std::unique_ptr<const int>