コンパイルするとき、私は次のエラーを取得する:ここでは、コードIST error: invalid types ‘size_t {aka long unsigned int}[size_t {aka long unsigned int}]’ for array subscript interactionMatrix[i][k]=interaction;
C++:エラー:無効なタイプ 'size_tの{別名長いunsigned int型} [size_tの{別名長いunsigned int型}]' 配列の添字用
:
void Tree::computeInteractionScore(size_t* interactionMatrix){
size_t num_independent_variables = data->getNumCols() - no_split_variables->size();
for (size_t i = 0; i < num_independent_variables; ++i) {
for (size_t k = 0; i < num_independent_variables; ++k) {
size_t interaction = 0;
if(k!=i){
// interaction = computeInteraction(i,k);
}
interactionMatrix[i][k]=interaction;
}
}
}
interactionMatrixは、次のように宣言されています。
size_t num_independent_variables = data->getNumCols() - no_split_variables->size();
size_t interactionMatrix[num_independent_variables][num_independent_variables];
for (size_t i = 0; i < num_trees; ++i) {
trees[i]->computeInteractionScore(&interactionMatrix);
}
'size_t interactionMatrix [num_independent_variables] [num_independent_variables];'これは有効ではありません。C++。配列は、コンパイル時の式を使用して宣言して、エントリの数を示す必要があります。 'std :: vector> interactMatrix(num_independent_variables、std :: vector (num_independent_variables));' –
PaulMcKenzie
'computeInteractionScore()'の中では、 'interactionMatrix'を1次元として扱うことができますアレイ。ですから、i行目とk列目の要素に 'interactMatrix [i * num_independent_variables + k]'としてアクセスする必要があります。 – Leon
私はより良いdupがこれだと思います:http://stackoverflow.com/questions/14548753/passing-a-multidimensional-variable-length-array-to-a-function、それはVLA-sにもっと関連しているので。このコードのもう1つの問題は、OPがこの配列へのポインタを渡していることです。 – marcinj