#include <iostream>
using namespace std;
int n;
void displaysum(double mat[n][n])
{
double sum= 0;
for(int j=0;j<n;j++)
sum += mat[j][j];
cout<<"Sum of Diagnols Elements is \n"<<sum;
}
int main()
{
cout << "what are the number of rows or column in the matrix" << endl;
cin >> n;
double matrix[n][n];
for (int row = 0; row < n; row++)
{
for (int column = 0; column < n; column++)
cin >> matrix[row][column];
}
displaysum(matrix)
return 0;
}
我不明白为什么我在XCODE
中调用没有匹配函数的错误。即使我尝试在我的函数原型中更改变量,它仍然会给我同样的错误。
答案 0 :(得分:1)
我不明白为什么我在
XCODE
中调用没有匹配函数的错误。
基本问题是C ++希望第二个维在编译时是常量的,以便进行类型检查。如果你想解决这个问题,你将不得不使用指针(AFAIK)。您可以通过将displaysum
的声明更改为
void displaysum(double **mat)
并在原始函数中为matrix
进行适当的分配。
如果您不喜欢这样,欢迎使用C ++的类型系统。在函数声明中,double mat[n][n]
被视为double (*)[n]
。这实际上是有道理的,但是为什么它没有看到matrix
属于那种类型是因为n
不是常数。您可以更改通话
displaysum(matrix);
到此:
displaysum(static_cast<double (*)[n]>(matrix);
并收到好奇的错误
static_cast from 'double (*)[n]' to 'double (*)[n]' is not allowed
(这不是你从类型系统中得到的最奇怪的错误)