【发布时间】:2021-11-28 16:27:10
【问题描述】:
我一直在关注 CodeBeauty 的 C++ 指针教程,在 video regarding smart pointers 上遇到了问题。
unique_ptr<int>unPtr1=make_unique<int>(25);
cout << unPtr1;
我确实包含了<memory>,并且我的语法与显示的完全相同,但是每当我尝试运行程序时都会收到此错误消息(完整错误是here):
pointers.cpp: In function 'int main()':
pointers.cpp:194:22: error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and 'std::unique_ptr<int>')
cout << unPtr1;
~~~~~^~~~~~~~~
这可能是编译器问题吗?我在 VSCode + mingw-64 工作。
【问题讨论】:
-
您要打印什么:智能指针存储的地址或该地址的值?
-
cout << unPtr1;可能是一个错字。应为cout << unPtr1.get();或cout << *unPtr1;,具体取决于应打印的地址或值。 -
@GonenI 我很惊讶您没有收到错误消息。据我所知,标准库中没有
operator<<用于unique_ptr。您使用的是什么实现方式? -
不要使用 cout。 cout 是一个失败的实验。