c++ - 如何将二维数组作为参数传递?

标签 c++ arrays multidimensional-array

我的 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]);

最后一个版本接受任何正确类型的多维数组,并且可能正是您正在寻找的。

关于c++ - 如何将二维数组作为参数传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4802674/

相关文章:

c - 有没有办法硬编码二维整数数组而不必在 C 中提及任何维度?

c - 如何扫描二维字符数组而不扫描输入/空格字符?

javascript - 在没有太多嵌套循环的情况下在多维数组中查找匹配元素?

c++ - 尝试查找最大值和最小值以及预期的不合格id错误

c++ - 标准 C++ assert() 如何工作以及如何重新定义它?

java - 保龄球得分和异常处理

c++ - 使用字符串数组而不是 int 数组实现二进制搜索

php - 如何从 MySQL 列中提取数据并将其放入单个数组中

c++ - 从 make 中突出显示 C/C++ 错误?

c++ - 为什么 boost::filesystem::canonical() 需要目标路径存在?