gpt4 book ai didi

c++ - 使谷歌测试框架输出用户定义的类型

转载 作者:太空宇宙 更新时间:2023-11-04 12:02:25 24 4
gpt4 key购买 nike

我想在提到的测试框架中输出我的类型。 Google clearly states这是可能的。

As mentioned earlier, the printer is extensible. That means you can teach it to do a better job at printing your particular type than to dump the bytes. To do that, define << for your type:

namespace foo {

class Bar { ... };

// It's important that PrintTo() is defined in the SAME
// namespace that defines Bar. C++'s look-up rules rely on that.
void PrintTo(const Bar& bar, ::std::ostream* os) {
*os << bar.DebugString(); // whatever needed to print bar to os
}

} // namespace foo

我好像是这样做的。但是在尝试编译时我得到以下信息:

error: no match for ‘operator<<’ in ‘* os << val’ /usr/include/c++/4.4/ostream:108: note: candidates are:

后面是一长串建议,我的建议重载了 operator<<最后:

std::ostream& Navmii::ProgrammingTest::operator<<(std::ostream&, Navmii::ProgrammingTest::AsciiString&)

有人可以帮忙吗?

最佳答案

您似乎已经定义了 operator<<对于非常量 AsciiString对象。无论谷歌试图打印什么,都可能是常量。将第二个参数作为常量引用传递,因为您不应该修改打印的值:

std::ostream& Navmii::ProgrammingTest::operator<<(
std::ostream&,
Navmii::ProgrammingTest::AsciiString const&);

这与链接文档中的代码更加匹配。不过,问题的引文中省略了该部分。

问题引用了 PrintTo例子。该代码很好,但我不认为那是您在自己的代码中真正完成的。如文档所述,您可以使用 PrintTo如果你不想提供 operator<< ,或者如果 operator<<对于您的类(class),不适合在单元测试期间进行调试输出。

关于c++ - 使谷歌测试框架输出用户定义的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13588239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com