【发布时间】:2015-09-16 14:59:53
【问题描述】:
我的实际代码(类名改了,有些删减,因为是公司机密,但只有一个编译器错误,所以我删的应该不会影响事情)
class Xyz
{
public:
virtual void vPrintStatus() const;
};
及其模拟
class MockXyz : public Xyz
{
public:
MOCK_CONST_METHOD0(vPrintStatus,
void());
};
这给了我一个编译器错误:error: ‘vPrintStatus’ is not a type
#includes 等都可以。编译器显然找到了vPrintStatus,如果我将其更改为未定义的内容:
MOCK_CONST_METHOD0(independence,
void());
我收到error: ‘independence’ has not been declared。
所以,编译器找到vPrintStatus 并且似乎知道它的类型(或者,至少,它不是什么类型)。
我确信我遵循 MOCK_CONST_METHOD0 的语法 - 模拟宏应该期待一个函数名,而不是类型,作为它的第一个参数。
我做错了什么?
【问题讨论】:
-
那是真正的代码,是从你正在编译的文件中复制粘贴过来的吗?
-
看来
MOCK_CONST_METHOD0被解析为成员函数名,而不是宏,请确保包含正确 -
还要确保
Xyz有一个虚拟析构函数。 -
@PiotrSkotnicki - 你是对的 - 缺少 #include "gmock.h"。随时将其发布为答案。很抱歉浪费大家的时间,但我已经为此努力了好几个小时:-(
标签: c++ googlemock