我正在尝试通过 Google 模拟一个具有 throw() 说明符的虚拟方法。原始函数如下所示:
virtual ReturnValue FunctionName() const throw();
我收到编译器错误:looser throw specifier for 'virtual FunctionSignature'
这是我到目前为止尝试过的代码:
MOCK_CONST_METHOD0( FunctionName, ReturnValue() );
MOCK_CONST_METHOD0( FunctionName, ReturnValue() throw() );
MOCK_CONST_METHOD0( FunctionName, ReturnValue() ) throw(); // Gives a different error entirely.
我已经尝试了几乎所有我能想到的其他组合,但这些是看起来最合乎逻辑的组合。我如何使用 throw() 说明符让 Google 模拟一个方法?
最佳答案
据我所知,您必须使用“内部”GMOCK_METHOD0_
宏,并使用:
GMOCK_METHOD0_(, const throw(), , FunctionName, ReturnValue)
因为 MOCK_CONST_METHOD0(m, F)
被#defineed 到 GMOCK_METHOD0_(, const, , m, F)
, gmock/gmock-generated-function-mockers.h#644和 gmock/gmock-generated-function-mockers.h#347定义那个。
关于c++ - 使用 throw() 说明符模拟方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4922595/