概括
如果外部库的函数需要一个非常量指针(double *
),但已知它的值保持不变,因此根据 const 正确性我应该传递一个 const 指针(const double *
),我该怎么办?
情况
我想创建一个计算向量自相关的函数,但不幸的是,fftw3(这是一个 C API)似乎并不关心 const 的正确性。我想调用的函数是:
fftw_plan fftw_plan_dft_r2c_1d(int n0,
double *in, fftw_complex *out,
unsigned flags);
我想创建的代码:
vector<double> autocorr(const vector<double>& data)
{
vector<double> ret(data.size(), 0);
// prepare other variables
fftw_plan a = fftw_plan_dft_r2c_1d(size, &data.front(), tmp, FFTW_ESTIMATE);
// do the rest of the work
return ret;
}
当然,这是行不通的,因为我的函数的参数是const vector<double>& data
我不能调用&data.front()
. 保持我的代码的 const 正确性的最合适的解决方案是什么?