5
如果我有一个简单的类具有两个变量,x和y,以及功能的ToString()返回一个格式化的字符串与数据。当我打电话C++格式的cout <<自动
cout << simpleClass << "\n";
任何人都知道一种方式我可以自动调用simpleClass.ToString来返回格式正确的字符串?我猜想有一种方法可以用操作符函数来做到这一点,但我不知道如何做到这一点。
如果我有一个简单的类具有两个变量,x和y,以及功能的ToString()返回一个格式化的字符串与数据。当我打电话C++格式的cout <<自动
cout << simpleClass << "\n";
任何人都知道一种方式我可以自动调用simpleClass.ToString来返回格式正确的字符串?我猜想有一种方法可以用操作符函数来做到这一点,但我不知道如何做到这一点。
如果你问如何定义这样的操作,
template<class CharT, class TraitsT>
std::basic_ostream<CharT, TraitsT>&
operator <<(std::basic_ostream<CharT, TraitsT>& os, SimpleClass const& sc)
{
return os << sc.ToString();
}
您定义
std::ostream& operator <<(std::ostream&, const SimpleClass&)
调用ToString()
,路过ostream&
,并返回ostream&
。
+1:我喜欢你如何实现其在'basic_ostream'对象进行动作的功能,而不仅仅是'cout' –
@Ken:太多人忘记了宽流。 - [ – ildjarn
+1和饼干 –