加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – gmock和转发声明的类

发布时间:2020-12-16 06:51:16 所属栏目:百科 来源:网络整理
导读:假设我有这个类,类型管理器在Base.h中向前声明. #include Base.hclass MockBase : public Base{public: MOCK_CONST_METHOD0( manager,const Manager( ) ); ...}; 我不打算在我的测试中使用这个方法,所以我不想在测试文件中包含Manager类的定义. 但我认为,虽
假设我有这个类,类型管理器在Base.h中向前声明.

#include <Base.h>

class MockBase : public Base
{
public:
    MOCK_CONST_METHOD0( manager,const Manager&( ) );
    ...
};

我不打算在我的测试中使用这个方法,所以我不想在测试文件中包含Manager类的定义.

但我认为,虽然编译gmock尝试准备错误消息,并深入其内部它需要管理器变量的地址,我有一个错误:

error C2027: use of undefined type ‘Manager’
externalgooglemockgtestincludegtestgtest-printers.h 146 1

我可以以某种方式避免包含具有我不会使用的方法的前向声明类型定义的文件吗?

解决方法

我通过定义PrintTo函数解决了这个问题,因此gtest不会尝试使用导致问题的TypeWithoutFormatter函数.这是不幸的,我不确定什么是正确的解决方案.

namespace Foo { void PrintTo(const Bar& x,::std::ostream* os) { *os << "Bar " << &x; }}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读