2015-11-26 1 views
1

Я пишу некоторые основные функции матрицы и получаю сообщение об ошибке, что я не могу понять, как диагностировать.переменная или поле (функция) объявлено void

У меня есть функция в моем файле .h:

void matrixMultiplication (int arr1[][100], int arr2[][100], int a1row, int a2col, int targetArr[][100]); 

В моем файле .cpp У меня есть:

void matrixMultiplication (matrix1, matrix2, rowOfMatrix1, columnOfMatrix2, finalMatrix); 

, который определяется как

void matrixMultiplication (int arr1[][100], int arr2[][100], int a1row, int a2col, int targetArr[][100]) { 
    for (int a = 0; a < a1row; a++) { 
     for (int b = 0; b < a2col; b++) { 
      for (int c = 0; c < a2col; c++) { 
       targetArr[a][b] += arr1[a][c]*arr2[c][b]; 
      } 
     } 
    } 
} 

Все объявляется здесь:

//designates the sizes of both matrices 
int rowOfMatrix1 = 0; 
int columnOfMatrix1 = 0; 
    // size of matrix 1 = rowOfMatrix1 x columnOfMatrix1 
int rowOfMatrix2 = 0; 
int columnOfMatrix2= 0; 
    // size of matrix 2 = rowOfMatrix2 x columnOfMatrix2 

//arrays that hold the values of the integers in the matrices 
int matrix1 [100][100]; 
int matrix2 [100][100]; 
int finalMatrix [100][100]; 

Однако, когда я запускаю программу, я получаю следующее сообщение об ошибке:

In function 'int main()' [Error] variable or field 'matrixMultiplication' declared void 

Я вижу, что этот вопрос был задан раньше, но ответ должен был сделать со строками, которые не имеют ничего общего с моей программой , и я не могу понять, как продлить этот ответ на этот случай.

+1

Почему вы указать тип возвращаемого значения, когда вы * вызов * функция? –

+0

Что касается несвязанного примечания, я надеюсь, что вы инициализируете 'finalMatrix' где-то перед вызовом или у вас будет * неопределенное поведение *. –

ответ

1

Компилятор считает, что вы объявляете переменную с именем matrixMultiplication, которая инициализируется параметрами, которые вы указали, и тип которых void.
Вы не можете создать переменную типа void.

Вы не должны указать тип возвращаемого значения при вызове функции, поэтому удалить void:

matrixMultiplication (matrix1, matrix2, rowOfMatrix1, columnOfMatrix2, finalMatrix); 
+1

ура, мне нужно больше спать ясно. –

0

Попробуйте удалить void из-под линии и перекомпилировать. Это должно решить проблему.

void matrixMultiplication (matrix1, matrix2, rowOfMatrix1, columnOfMatrix2, finalMatrix); 

При вызове функции тип возврата не должен указываться. Вот почему компилятор жалуется.

+0

yes to @ user4581301 –

+0

@ user4581301 Да, вы правы. Я имел в виду удаление пустоты, а не вызов функции :( –

Смежные вопросы