コンパイルするコードを取得できません。問題は、構造体の要素に配列参照を割り当てることにあるようです。以下は、以下のコードとエラーメッセージです。構造体への配列参照の割り当てに関するC++の問題
だから私はその後、私はダブルスのランダムな50×10の配列を生成する関数を持っているこの
struct numpyFormatterData{
double* pointerToNumpyData;
unsigned long numberOfDataRows;
unsigned long numberOfDataColumns;
std::string delimitedStringOfColumnNames;
};
のように見える構造体を持っています。
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
への参照を代入しようとしていますことを知っています。私はこれを行うためにさまざまな方法を試みましたが、誰も働いていませんでした。助言がありますか?
多くの問題があります。まず、エラー・テキストに従って、テスト・ファイルのスコープに含まれるgenerateRandomArray関数はありません。第二に、関数には何かを割り当てることができる結果フィールドはありません。最後に、結果はダブル*ではなくダブル**であることが示唆されているようです。これをチェックしてください。 –
結果は 'generateRandomArray(...)'で宣言されていませんが、他の場所で宣言されていてアクセス可能であると仮定しましょう。関数はdoubleを返すので、結果を返すこともできません。代わりに最初の要素へのポインタを返します。 –
@ArseniiFomin実際には、問題はgenerateRandomArray関数ではありません。 generateRandomArray関数のテストファイルに 'include'があるので、それは問題ではないようです。今度は 'testDataArray'の前に'& 'amperstandを削除すると、' 'ダブル 'を' double * 'に代入するとエラーが発生します。 testNumpyRequest.pointerToNumpyData = testDataArray;これはエラーだと思いますその割り当てに位置しています。 – krishnab