我試圖做一個布爾函數驗證是否矩陣是對稱的,但我得到這個錯誤:錯誤:無法將'float(*)[(((sizetype)(((ssizetype)n)+ -1))+ 1)]''轉換爲參數'3'的float(*)[100]'
|54|error: cannot convert 'float ()[(((sizetype)(((ssizetype)n) + -1)) + 1)]' to 'float ()[100]' for argument '3' to 'void Transpose(int, float ()[100], float ()[100])'|
#include <iostream>
using namespace std;
void Transpose(int n, float a[][MAX], float T[][MAX]) {
int i,j;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
T[i][j] = a[j][i];
}
}
}
bool Symmetric(int n, float a[][MAX]) {
float t[n][n];
int i,j;
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
t[i][j] = 0;
}
}
Transpose(n,a,t); // <--- Error here.
for(i = 0; i < n; i++){
for(j = 0; j < n; j++){
if(t[i][j] != a[i][j]){
return false;
}
}
}
return true;
}
在Transpose(n,a,t);
線
'float t [n] [n];'請注意,VLA並不是C++語言的正式組成部分。在C++中,數組只能使用編譯時表達式聲明,而不是運行時值。 – PaulMcKenzie