クラスで左シフト演算子をオーバーロードすると、出力が正常に機能します。たとえば、 cout << obj; という行がある場合です。コンマで区切られたフィールドを出力します。
ostream& operator<<(ostream& output, const MyClass& obj)
{
output << obj.field1 << ", " << obj.field2;
return output;
}
この操作のテスト ケースを書きたいのですが、返された結果を cxxtest で期待される結果と比較する方法がわかりません。次のことを試しましたが、うまくいきませんでした。
TS_ASSERT_EQUALS(cout << "1, 50.0", cout << obj);
別の cxxtest 操作を使用するか、TS_ASSERT_EQUALS のパラメーター受け渡しメカニズムを変更する必要がありますか?
次の行を出力すると、同じ結果が得られることに注意してください。
cout << obj;
cout << "1, 50.0";
注: TS_ASSERT_EQUALS が失敗するため、プログラムをコンパイルしようとすると、一連のコンパイラ エラーが発生します。