25
我很奇怪,为什么在编译时,我得到一个错误:C++返回常量的unique_ptr
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();
它正确编译,当我从get
签名删除const
。
有没有什么办法可以返回一个常量unique_ptr?
实际的'std :: unique_ptr'对象应该是常量还是它指向的数据? –
是的,我的意思是实际的'std :: unique_ptr'对象应该是不变的。 – jean553
为什么你需要一个可以改变的数据的常量指针?这很奇怪。 –