unique_ptr和普通指针不匹配

时间:2017-01-25 01:42:05

标签: c++

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()方法

我缺少什么?

1 个答案:

答案 0 :(得分:3)

问题是没有重载的operator<<函数需要std::unique_ptr个对象。

打印指针通常是无用的,除非在极少数情况下(主要是调试目的),因此智能指针实际上不需要通用的operator<<重载。

如果您习惯打印智能指针(虽然我不明白为什么),您可以轻松添加自己的重载。