你如何使用googlemock的方法,它采取Eigen::张量对象作为输入参数?



我有一个类如下:

class MyClass{
public:
void my_method(Eigen::Tensor<double, 5> &param);
};

我想创建一个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>中有逗号。有什么推荐的方法来处理这个问题吗?

正如文档所述,类型不能有未受保护的逗号,否则将无法编译(由于这些宏的实现方式)。有两个选项可以解决这个问题:

  1. 每个类型用逗号在另一组括号中括起来:
MOCK_METHOD(void, my_method, ((Eigen::Tensor<double, 5>&)), (override));
  1. 使用类型别名:
using TensorType = Eigen::Tensor<double, 5>;
MOCK_METHOD(void, my_method, (TensorType&), (override));

相关内容

  • 没有找到相关文章

最新更新