2011-07-21 9 views
5

Iデータとフォーマットされた文字列を返す2つの変数xとyとの単純なクラス、関数toString()を持っていた場合。私はC++フォーマット<<自動的

を呼び出すとき
cout << simpleClass << "\n"; 

誰も私が自動的に正しくフォーマットされた文字列を返すために呼び出さsimpleClass.ToStringことができた方法を知っていますか?私は演算子の関数でこれを行う方法があると思っていますが、私はこれをどうやってやるのか分かりません。

答えて

9

あなたは、このような演算子を定義する方法を求めている場合は、

template<class CharT, class TraitsT> 
std::basic_ostream<CharT, TraitsT>& 
operator <<(std::basic_ostream<CharT, TraitsT>& os, SimpleClass const& sc) 
{ 
    return os << sc.ToString(); 
} 
+4

1:あまりにも多くの人々が広いストリームを忘れる:私はあなたがすべての 'basic_ostream'オブジェクトだけではなく、' cout' –

+0

@Kenで動作する機能を実装する方法が好きです。 ; - [ – ildjarn

+0

+1とクッキー –

2

あなたはostream&を渡し、ToString()を呼び出し、ostream&を返すために

std::ostream& operator <<(std::ostream&, const SimpleClass&) 

を定義します。

関連する問題