C ++在为struct分配数组引用时遇到麻烦

时间:2017-04-20 05:12:05

标签: c++ arrays struct reference

我无法编译一些代码。问题似乎在于为结构的元素分配数组引用。以下是代码和错误消息。

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

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的引用。我尝试过各种不同的方法,但没有一种方法可行。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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

编辑:我刚刚注意到你的数组是在堆栈上分配的,这不是你想要的。请考虑使用堆或vector