unique_ptr和普通指针不匹配
unique_ptr and normal pointer doesnt match
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() 方法工作
我错过了什么?
问题是没有重载的operator<<
函数接受std::unique_ptr
对象。
打印指针通常是无用的,除非在极少数情况下(主要是调试目的),因此实际上不需要智能指针的通用operator<<
重载。
如果你养成了打印智能指针的习惯(虽然我不明白为什么),你可以很容易地添加自己的重载。
相关文章:
- 为什么指针不写入类的地址?
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 模板推导:为什么函数指针模板定义在常量和/或引用时不匹配?
- 对std::函数对象的调用不匹配,该对象是指向成员函数的指针
- unique_ptr和普通指针不匹配
- 运算符 = 不匹配,构造函数创建一个指针
- 返回指向常量getter的指针时,返回值类型与函数类型不匹配
- 由于函数指针类型定义与具有正确const逻辑的指定函数不匹配,导致编译警告
- 参数类型与指针/引用不匹配
- 将成员函数指针传递给带有可变参数的MFP的函数时,类型不匹配
- 不能将一个指针赋值给另一个指针,因为类型不匹配,或者编译器是这么说的
- 指针不匹配和麻烦
- 常量不匹配:2 个重载对'this'指针没有合法转换