小编ren*_*ond的帖子

删除C上的非泛型模板参数

我正在使用ublas作为我的矩阵代码,但我希望它可以交换,所以我这样做:

typedef boost::numeric::ublas::matrix<double> cMatrix;
Run Code Online (Sandbox Code Playgroud)

今天,我需要将一些矩阵更改为有界大小,所以我也会这样:

typedef boost::numeric::ublas::bounded_matrix<double, 3, 3> Matrix3d;
Run Code Online (Sandbox Code Playgroud)

问题是我的旧函数声明:

void cClass::function(int param1,
                      int param2,
                      cMatrix &param3,
                      int param4);
Run Code Online (Sandbox Code Playgroud)

不再有效.它给了我:

error : a reference of type "cMatrix &" (not const-qualified) cannot be initialized with a value of type "Matrix3d"
Run Code Online (Sandbox Code Playgroud)

我设法通过将声明更改为:

template <class A>
void cClass::function(int param1,
                      int param2,
                      boost::numeric::ublas::matrix<double, boost::numeric::ublas::row_major, A> &param3,
                      int param4);
Run Code Online (Sandbox Code Playgroud)

问题是我的定义是一个cpp文件,所以我必须在cpp中做这样的事情:

void dummyFunc()
{
  cClass dummy(NULL, NULL);
  cMatrix c;
  Matrix12d d12;
  dummy.function(-1, -1, c, -1);
  dummy.function(-1, -1, d12, -1);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法避免使用dummyFunc或以其他方式概括函数?

c++ templates typedef boost-ublas

5
推荐指数
1
解决办法
324
查看次数

标签 统计

boost-ublas ×1

c++ ×1

templates ×1

typedef ×1