【发布时间】:2015-02-15 23:41:10
【问题描述】:
我使用的是 Google Mock 1.6.0。使用 MOCK_METHODN 宏时,似乎认为我正在为返回 std::pair 的方法传递 3 个参数:
#include <gmock/gmock.h>
#include <utility>
class IFoo {
public:
virtual std::pair<int, int> bar() = 0;
};
class MockFoo {
public:
MOCK_METHOD0(bar, std::pair<int, int>());
};
int main() {
MockFoo f;
return 0;
}
编译器输出(GCC 4.6.3):
main.cpp:9:44: error: macro "MOCK_METHOD0" passed 3 arguments, but takes just 2
main.cpp:9:5: error: ‘MOCK_METHOD0’ does not name a type
如果我满足以下条件,则不会出现此错误:
- 将
std::pair<int, int>替换为int或void等简单类型 - 在具有
std::pair参数的方法上使用,而不是返回它
【问题讨论】:
标签: c++ macros std-pair googlemock