谷歌模拟编译错误(错误:'<函数名称>'不是类型)

Maw*_*awg 5 c++ googlemock

我的实际代码(类名更改,一些切,因为它是公司保密,但只有一个编译错误,所以我切不应该影响事情)

class Xyz
{
public:
   virtual void vPrintStatus() const;  
};
Run Code Online (Sandbox Code Playgroud)

和它的模拟

class MockXyz : public Xyz
{
 public:
    MOCK_CONST_METHOD0(vPrintStatus,
            void());
};
Run Code Online (Sandbox Code Playgroud)

这给了我一个编译器错误: error: ‘vPrintStatus’ is not a type

#includes等都可以.编译器显然发现vPrintStatus,如果我将其更改为未定义的内容:

MOCK_CONST_METHOD0(independence,
                void());
Run Code Online (Sandbox Code Playgroud)

我得到error: ‘independence’ has not been declared.

因此,编译器找到vPrintStatus并且似乎知道它的类型(或者至少知道它不是什么类型).

我确信我遵循的语法MOCK_CONST_METHOD0- 模拟宏shoudl期望函数名称,而不是类型,作为它的第一个参数.

我究竟做错了什么?

Pio*_*cki 6

以下错误消息:

error: ‘vPrintStatus’ is not a type
Run Code Online (Sandbox Code Playgroud)

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