編譯時我得到以下錯誤: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 {又名長無符號整型} [爲size_t {又名長無符號整型}]' 的數組下標
這裏IST的代碼:
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> interactionMatrix(num_independent_variables,std :: vector (num_independent_variables));' –
PaulMcKenzie
'computeInteractionScore()'內部''你可以使用'interactionMatrix'作爲一維陣列。因此,您必須以'interactionMatrix [i * num_independent_variables + k]'的形式訪問'第i行和第k列的元素。 – Leon
我認爲更好的重複是這一個:http://stackoverflow.com/questions/14548753/passing-a-multidimensional-variable-length-array-to-a-function,因爲它更多與VLA-s有關。此代碼的另一個問題是OP正在將指針傳遞給此數組。 – marcinj