我有一个2-dim const double矩阵,需要作为参数传递给一个带有(非const)double **参数的函数。
[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**
结构(通过在所有数组字段上运行的嵌套循环并逐个复制它们),然后将后者传递给{{1我可以在这做吗?
PS:鉴于我能够将setEqParams
传递给一个以right.dm_params
(或double[][]
?)作为参数的函数 - 我将如何摆脱{ {1}}? “提示”:double[4][8]
不起作用。
答案 0 :(得分:3)
一种相当丑陋的方式,至少不需要复制所有数据,就是创建一个临时的行指针数组,例如
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);
}