C++ C++;将数组引用指定给结构时出现问题
我很难得到一些代码来编译。问题似乎在于将数组引用分配给结构的元素。下面是代码和错误消息 我有一个结构,看起来像这样C++ C++;将数组引用指定给结构时出现问题,c++,arrays,struct,reference,C++,Arrays,Struct,Reference,我很难得到一些代码来编译。问题似乎在于将数组引用分配给结构的元素。下面是代码和错误消息 我有一个结构,看起来像这样 struct numpyFormatterData{ double* pointerToNumpyData; unsigned long numberOfDataRows; unsigned long numberOfDataColumns; std::string delimitedStringOfColumnNames; }; 然后我有一个函数
struct numpyFormatterData{
double* pointerToNumpyData;
unsigned long numberOfDataRows;
unsigned long numberOfDataColumns;
std::string delimitedStringOfColumnNames;
};
然后我有一个函数,它生成一个随机的50x10双精度数组
double generateRandomArray(double lower_, double upper_)
{
int row = 50;
int columns = 10;
double arr[rows][columns];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
arr[i][j] = std::uniform_real_distribution<double>(lower_, upper_)(gen);
}
}
return arr;
}
我收到的错误消息是:
undefined reference to `generateRandomArray(double, double)'
collect2: error: ld returned 1 exit status
我知道我试图错误地将引用分配给
testDataArray
。我尝试了各种不同的方法来实现这一点,但都没有成功。有什么建议吗?如果您要查找的是对数组的引用,则将double generateRandomArray(…)
的返回类型更改为double*generateRandomArray(…)
然后像这样返回引用返回&结果[0][0]
最后将double testDataArray
更改为double*testDataArray
编辑:我刚刚注意到您的数组是在堆栈上分配的,这不是本例中您想要的。考虑使用堆,或者使用<代码>向量< /代码>。我看到一些问题。首先,根据您的错误文本,测试文件的作用域中没有GeneratorDomainArray函数。第二,在函数中没有结果字段,您可以为其赋值。最后,结果似乎不是双倍*而是双倍**。请检查它。结果没有在
generateRandomArray(…)
中声明,但假设它是在其他地方声明的,并且可以访问,您仍然无法返回结果因为函数返回一个加倍,所以不能返回C++中的数组,而是返回指向第一个元素的指针。@ ArseniiFomin,实际上问题不是泛型函数数组函数。我在GeneratorDomainArray函数的测试文件中有一个include
,所以这似乎不是问题所在。现在,当我删除testDataArray
前面的和符号时,我得到一个错误无法将testNumpyRequest.pointerToNumpyData=testDataArray中的'double'转换为'double*代码>这就是为什么我认为该错误与该赋值有关。请参阅上面Falla Coulibaly的评论。您确实需要注意结果声明,因为如果它是在您的函数之外声明的,那么它是非常糟糕的样式。无论如何,您将找到它(声明),根据它的类型,您将了解您在分配中需要什么类型。错误消息只是意味着您没有在生成中包含所有相关的源文件或对象文件。请看,代码本身存在许多问题,但错误消息与这些问题无关。好的,谢谢。所以我在GeneratorDomainArray上支持你。我实际上返回了arr
——似乎我提供了该函数的旧版本——所以我将修复它。我支持返回数组指针的函数。感谢您澄清如何解决此问题。我来试试。嘿,法拉。哈哈,我很想使用向量,但在这种情况下不能。所以我实际上是尝试从Python NoMPy连接到C++。Numpy公开了一个指向其底层C数组的基本指针。所以我必须恢复C++的那一点。一旦我在C++中得到它,我实际上会生成一个向量——但是首先我必须抓住NUMPY发送的指针。但是你在这里的评论真的很有帮助。我对C++编程有点新,所以我只是找到了解决办法。
undefined reference to `generateRandomArray(double, double)'
collect2: error: ld returned 1 exit status