int a = 1;
int* w = &a;
std::unique_ptr<int> v(new int(a));
cout << "*w: " << *w << endl;// this works
cout << "*v: " << *v << endl;// this works
cout << "w: " << w << endl; // this works
cout << "v: " << v << endl; // this doesnt work
cout << "v: " << v.get() << endl; // this works
我认为独特的指针结构就像一个正常的结构。 但是当我尝试通过原始定义的名称获取此指针的地址时,它会在unique_pointer上显示“无操作符与此运算符匹配”的错误。它只适用于v.get()方法
我缺少什么?
答案 0 :(得分:3)
问题是没有重载的operator<<
函数需要std::unique_ptr
个对象。
打印指针通常是无用的,除非在极少数情况下(主要是调试目的),因此智能指针实际上不需要通用的operator<<
重载。
如果您习惯打印智能指针(虽然我不明白为什么),您可以轻松添加自己的重载。