我希望能够为一个对象定义流操作符 ( <<
, >>
),但要拥有一组以上的操作符,以便我可以根据上下文使用不同的集合。例如,如果我有一个对象如下:
struct Foo {
int a;
};
然后在某些地方我希望能够使用它
std::ostream& operator<<(std::ostream& out, const Foo& foo) {
out<<foo.a;
}
在其他人中,我更喜欢使用它
std::ostream& operator<<(std::ostream& out, const Foo& foo) {
out<<"'"<<foo.a<<"'";
}
但我看不出如何同时定义这两者。
我正在提交我自己的答案,但我希望其他人过去有理由比我更仔细地考虑这一点,并且最好在大型应用程序中采用有组织的方式来做这件事(因此术语“管理”在问题标题)。