gpt4 book ai didi

c++ - 重载运算符<<用于嵌套类模板

转载 作者:行者123 更新时间:2023-12-02 10:28:59 24 4
gpt4 key购买 nike

我有以下设置:

template< class T >
struct Foo {

struct Bar {
Bar ( const T &t ) : otherT_( t ) {}

T otherT_;
};

Foo ( const T &t ) : myT_( t ) {}

T myT_;
};

现在,我想让 Foo< T >::Bar实例可流式传输到std::cout和 friend 。我尝试了这个:
template< class T >
std::ostream& operator<< ( std::ostream &os,
const typename Foo< T >::Bar &bar ) {
os << "<bar: " << bar.otherT_ << ">";
return os;
}

但是以下代码无法编译:
  Foo< int > foo( 5 );
Foo< int >::Bar bar( 7 );

std::cout << bar << std::endl;

我猜编译器无法推断出 T类型。有没有办法让 operator<<的此类嵌套类实例表现良好?

谢谢!

最佳答案

是的,最简单的方法是将operator<<放入Bar内:

struct Bar {
Bar ( const T &t ) : otherT_( t ) {}

T otherT_;

friend std::ostream& operator<< ( std::ostream &os, const Bar &bar )
{
os << "<bar: " << bar.otherT_ << ">";
return os;
}
};

我在挖掘另一种方式...

关于c++ - 重载运算符<<用于嵌套类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63093273/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com