Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/150.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;将数组引用指定给结构时出现问题_C++_Arrays_Struct_Reference - Fatal编程技术网

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(…)
中声明,但假设它是在其他地方声明的,并且可以访问,您仍然无法
返回结果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