代码之家  ›  专栏  ›  技术社区  ›  user246392

如何比较C++中的两个oStask对象的相等性?

  •  3
  • user246392  · 技术社区  · 14 年前

    我在类中重载了左移位运算符,并且输出工作正常,因此,例如,当我有一行指示cout<<obj;时,我将输出用逗号分隔的字段。

     ostream& operator<<(ostream& output, const MyClass& obj)
     {
         output << obj.field1 << ", " << obj.field2;
         return output;
     }
    

    我想为此操作编写一个测试用例,但是我不知道如何将返回的结果与cxtest中的预期结果进行比较。我尝试了以下方法,但没有成功:

     TS_ASSERT_EQUALS(cout << "1, 50.0", cout << obj);
    

    我应该使用不同的cxtest操作还是更改ts_assert_equals中的参数传递机制?

    请注意,当我输出以下行时,得到的结果相同:

     cout << obj;
     cout << "1, 50.0";
    

    注意:当我试图编译程序时,我会得到一系列的编译器错误,因为ts assert等于失败了。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Victor Nicollet    14 年前

    即使它确实编译了,你基本上是在比较 cout 与自己…

    试着写两个不同的 std::stringstream s,提取它们的字符串值,并比较这些值。

    如果还需要测试ostream标志,请定义一个比较函数并使用 TS_ASSERT_RELATION .

    推荐文章