使用 C++,我想创建一个向量对象的实例input
,如main()
下面的测试程序的函数所示。向量填充数据,然后input
通过引用传递给compute()
函数。计算函数是返回两个向量对象real
和imag
。
是否可以按照下面代码片段中显示的方式返回这两个向量对象?
使用编译此代码gcc
会出现以下错误:
In function ‘void compute(const std::vector<double>&, std::vector<double>&, std::vector<double>&)’:
error: declaration of ‘std::vector<double> real’ shadows a parameter
error: declaration of ‘std::vector<double> imag’ shadows a parameter
也许有更好的方法来做到这一点?这是完整的测试程序:
#include <iostream>
#include <vector>
void compute(const std::vector<double> &input,
std::vector<double> &real, std::vector<double> &imag)
{
unsigned int N = input.size();
unsigned int csize = (N / 2) + 1;
// the error occurs here
std::vector<double> real(csize);
std::vector<double> imag(csize);
for (int i = 0; i < csize; i++)
{
real[i] = input[i] * i;
imag[i] = input[i] * -i;
}
} // end
int main()
{
const int num = 10;
std::vector<double> input(num);
for(int i = 0; i < num; i++)
input[i] = i;
std::vector<double> real;
std::vector<double> imag;
compute(input, real, imag);
} // end