【问题标题】:unable to print the address stored in unique pointer [duplicate]无法打印存储在唯一指针中的地址[重复]
【发布时间】:2021-10-31 15:49:11
【问题描述】:
#include<iostream>
#include<string>
#include<memory>
using namespace std;

int main()
    {
        unique_ptr<int>unPtr1 = make_unique<int>(25);
        cout << unPtr1 << endl;//Line 8
        cout << *unPtr1 <<endl;


        system("pause>nul");
    }

在第 8 行显示no operator "&lt;&lt;" matches these operands -- operand types are: std::ostream &lt;&lt; std::unique_ptr&lt;int, std::default_delete&lt;int&gt;&gt;

【问题讨论】:

  • 使用unPtr1.get()获取拥有的指针
  • 您的标题提到了存储在 in 唯一指针中的地址,但您的代码尝试将唯一指针本身流式传输。意识到这样的细微差异很重要,因为您的计算机太笨了,无法意识到差异很小。

标签: c++ unique-ptr


【解决方案1】:

在这里查看Godbolt

检查unique_ptrget 方法。 get 方法给出了 unique_ptr 封装的原始指针。

#include<iostream>

#include<string>

#include<memory>

using namespace std;
int main()

{
  std::unique_ptr < int > unPtr1 = make_unique < int > (25);
  std::cout << unPtr1.get() << std::endl;
  std::cout << * unPtr1;

  system("pause>nul");
}

【讨论】:

    猜你喜欢
    • 2021-11-28
    • 1970-01-01
    • 2021-07-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 2012-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多