我想模拟一个返回复杂数据类型的方法
class aClass
{
public:
virtual const QMap<QString, QString> aMethod() const;
}
class MockaClass : public aClass
{
public:
MOCK_CONST_METHOD0(aMethod, const QMap<QString, QString>());
}
Run Code Online (Sandbox Code Playgroud)
此代码无法编译:"宏"MOCK_CONST_METHOD0"传递3个参数,但只需2"
我认为googlemock宏不理解QMap并将逗号解释为参数分隔符.
有没有办法告诉googlemock QMap是返回值?
我正在编写几个函数,它们将模板函数的结果作为输入:
int alg1(Vect3) {...}
...
int algN(Vect3) {...}
void main() {
alg1( mat.topRightCorner<3,1>() )
}
Run Code Online (Sandbox Code Playgroud)
如果您好奇,可以topRightCorner返回 的子矩阵mat,这是来自Eigen的方法,其中维度在编译时已知时作为模板参数放置。
然而,使用宏创建“快捷方式”以在不同算法之间快速切换(因为在实际代码中该函数被多次调用),如下所示
#define ALG(X) ( algN(X) )
ALG( mat.topRightCorner<3,1>() )
Run Code Online (Sandbox Code Playgroud)
给出一个错误,因为宏被正确扩展但不知何故被误解为使用两个不同的参数,mat.topRightCorner<3并且1>().
用括号将输入包裹起来就可以了,但为什么会出现这种行为呢?