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
爲什麼你需要一個可以改變的數據的常量指針?這很奇怪。 –