我的 Matrx
类定义为
class Matrx
{
double A[50][50];
int m,n;
public:
Matrx(void);
Matrx(int a, int b)
{
m=a;
n=b;
}
Matrx operator +(Matrx b);
Matrx Transpose(Matrx b);
Matrx operator *(Matrx b);
CString printMatrx();
void readMatrx(double a[][]);
Matrx TransposeMat(Matrx b);
};
void Matrx::readMatrx(double a[][])
{
for(int i=0;i< m;i++)
{
for(int j=0;j< n;j++)
A[i][j]=a[i][j];
}
}
智能感知给出如下错误
1 IntelliSense: an array may not have elements of this type d:\bmadaptive_dd_v1.02\matrx.h 17 27 TestServer
为什么?
如何传递一个二维数组作为函数的参数?
最佳答案
问题是在C++中传递多维数组作为参数时,必须指定最外层数组的维数。例如:
void ThisIsIllegal(int arr[][]); // Wrong!
void ThisIsAlsoIllegal(int arr[10][]); // Also wrong
void ThisIsLegal(int arr[][10]); // Okay
如果您希望能够拥有一个接受任意大小数组的函数,您可以使用模板:
template <size_t N, size_t M>
void ThisIsAlsoLegal(int (&arr)[M][N]);
最后一个版本接受任何正确类型的多维数组,并且可能正是您正在寻找的。p>
关于c++ - 如何将二维数组作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802674/