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 效果更好)
我的实际代码(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 效果更好)