将const double[][]数组作为参数传递给double**接口



我有一个2-dim的const双矩阵,它需要作为参数传递给一个接受(非const)双**形参的函数。

[CEqParams.h] // < given as is - can't do a thing about it
class CEqParams
{
public:
  void operator=(const CEqParams &right);  
  ...
  double dm_params[4][8];
};

.

[some_functions.h] // < dto.
...
void setEqParams(double **m);
...

.

[CEqParams.cpp]
void CEqParams::operator=(const CEqParams &right)
{
  setEqParams( « magic here » );
}

其中« magic here »(在代码段的最后一段)取right.dm_params(或其内容的适当表示形式)。

除了手动将right.dm_params转移到辅助double**结构(通过在所有数组字段上运行的嵌套循环并逐个复制它们),然后将后者传递给setEqParams,我可以在这里做什么?

PS:鉴于我能够将right.dm_params传递给一个以double[][](或double[4][8] ?)为参数的函数-我该如何摆脱const ?"提示":const_cast<double[4][8]>(right.dm_parameters)不工作

一个相当难看的方法,至少不需要复制所有的数据,是创建一个行指针的临时数组,例如

void CEqParams::operator=(const CEqParams &right)
{
  double * dm_params_ptrs[4] = { dm_params[0], dm_params[1], dm_params[2], dm_params[3] };
  setEqParams(dm_params_ptrs);
}

相关内容

  • 没有找到相关文章

最新更新