Google mock compile error (error: ‘<function name>’ is not a type)

Google mock compile error (error: ‘<function name>’ is not a type)

我的实际代码(class名字改了,删了一些,因为是公司机密,但是只有一个编译错误,所以我删的应该不影响)

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 的语法 - 模拟宏应该期望函数名称而不是类型作为其第一个参数。

我做错了什么?

以下错误信息:

error: ‘vPrintStatus’ is not a type

表示MOCK_CONST_METHOD0(vPrintStatus, void());被编译器解析为成员函数的声明,名为MOCK_CONST_METHOD0,有两个参数,typevPrintStatus(因此错误),另一个是函数指针类型(调整后void(*)())。显然,这意味着宏 MOCK_CONST_METHOD0 的定义对于模拟声明所属的翻译单元是不可见的。确保您已将 <gmock/gmock.h> 添加到该文件。

我遇到了类似的问题,结果我尝试使用:

MOCK_CONST_METHODO 而不是

MOCK_CONST_METHOD0(零对 O 效果更好)