我想知道为什么我在编译时遇到错误:
const std::unique_ptr<int> get() {
return std::make_unique<int>(10);
}
int main() {
const std::unique_ptr<int> value = get();
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
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();
Run Code Online (Sandbox Code Playgroud)
当我const从get签名中删除它时,它正确编译.
有没有办法返回一个常量unique_ptr?
Som*_*ude 53
因为它unique_ptr是常量,所以不能仅移动复制.并且unique_ptr不允许复制a (否则它将不是"唯一的").
如果指针指向的数据应该是常量,那么请std::unique_ptr<const int>改用.
| 归档时间: |
|
| 查看次数: |
2596 次 |
| 最近记录: |