Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/151.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::unique_ptr类成员上的ostream_C++_C++14_Unique Ptr - Fatal编程技术网

C++ std::unique_ptr类成员上的ostream

C++ std::unique_ptr类成员上的ostream,c++,c++14,unique-ptr,C++,C++14,Unique Ptr,我想打印一个std::unique_ptr,它是Bar的类成员。 但是,下面的代码不起作用,请参阅我关于Sturry的注释:对于 STD::UNQuyJPPT< /COD>没有定义输出操作符:这有点令人伤心,但是许多C++类缺少输出运算符。最简单的方法是只打印指针: stream << bar.foo_unique().get(); 没有从std::unique_ptr到T const&的隐式转换,这会阻止流插入操作符的确定。不过你有几个选择。第一个选项是为341声誉提供一个运算符

我想打印一个std::unique_ptr,它是Bar的类成员。
但是,下面的代码不起作用,请参阅我关于Sturry

的注释:对于<代码> STD::UNQuyJPPT< /COD>没有定义输出操作符:这有点令人伤心,但是许多C++类缺少输出运算符。最简单的方法是只打印指针:

stream << bar.foo_unique().get();

没有从
std::unique_ptr
T const&
的隐式转换,这会阻止流插入操作符的确定。不过你有几个选择。第一个选项是为341声誉提供一个
运算符重写。这样提供错误描述是不好的!1) const std::unique\u ptr&foo\u unique()const
应该(准确地)做什么?除了
Foo const&Foo()const
,为什么还需要它?2) 什么是
stream如果你写
stream谢谢你的stream他忘了
out@leemes:true-不测试代码的危险!谢谢修理!“哪一个阻止了流插入操作符的推导”是在模板参数推导中推导出来的?
stream << bar.foo_unique().get();
stream << *bar.foo_unique();
std::ostream& operator<< (std::ostream& out, std::unique_ptr<Foo> const& foo) {
    return out << *foo; // or foo.get()depending on what you want to get printed
}
std::ostream& operator<< (std::ostream& out, Foo const& arg)
{
    // output stuff here
    return out;
}

template<class T>
std::ostream& operator<< (std::ostream& out, std::unique_ptr<T> const& arg)
{
    return out << *arg;
}