我有一个类如下:
class MyClass{
public:
void my_method(Eigen::Tensor<double, 5> ¶m);
};
我想创建一个mock:
class MockMyClass {
public:
MOCK_METHOD(void, my_method, (Eigen::Tensor<double, 5>), (override));
};
但是我得到了错误
static assertion failed: This method does not take 2 arguments. Parenthesize all types with unproctected commas.
是因为在张量类型声明<double, 5>
中有逗号。有什么推荐的方法来处理这个问题吗?
正如文档所述,类型不能有未受保护的逗号,否则将无法编译(由于这些宏的实现方式)。有两个选项可以解决这个问题:
- 每个类型用逗号在另一组括号中括起来:
MOCK_METHOD(void, my_method, ((Eigen::Tensor<double, 5>&)), (override));
- 使用类型别名:
using TensorType = Eigen::Tensor<double, 5>;
MOCK_METHOD(void, my_method, (TensorType&), (override));