C 在将数组引用分配给struct时麻烦

C++ trouble with assigning array reference to struct

本文关键字:struct 麻烦 分配 引用 数组      更新时间:2023-10-16

我很难获得一些代码进行编译。问题似乎是将数组引用到结构的元素。这是下面的代码,以及错误消息。

所以我有一个看起来像这样的结构

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;
}

在我的测试案例中,我有以下代码引起了问题。我正在使用Catch测试框架。

TEST_CASE( "Test construction of NumpyDataRequest Class", "[NumpyDataRequest]" ) {
SECTION( "Test factory method for creating NumpyDataRequest" ) {
    double testDataArray = generateRandomArray(0.0, 2.0);
    numpyFormatterData testNumpyRequest;
    testNumpyRequest.numberOfDataRows = 50;
    testNumpyRequest.numberOfDataColumns = 10;
    testNumpyRequest.delimitedStringOfColumnNames;
    testNumpyRequest.pointerToNumpyData = &testDataArray; //PROBLEM HERE
    std::unique_ptr<NumpyDataRequest> testingDataRequest = NumpyDataRequest::setDataForRequest(testNumpyRequest);
    numpyFormatterData checkDataRequest = testingDataRequest->getRequestData();
    REQUIRE(checkDataRequest.numberOfDataColumns == 10);

}
}

我收到的错误消息是:

undefined reference to `generateRandomArray(double, double)'
collect2: error: ld returned 1 exit status

我知道我试图错误地将引用分配给testDataArray。我已经尝试了多种不同的方法来做到这一点,但是没有一个奏效。有任何建议吗?

如果您要寻找的是对数组的引用,则将double generateRandomArray(...)的返回类型更改为 double* generateRandomArray(...),然后将return &result[0][0];的引用返回,最后将double testDataArray更改为double *testDataArray

编辑:我只是注意到您的数组已分配在堆栈上,这在此示例中不是您想要的。考虑使用堆或vector