无效使用非静态数据成员

Kar*_*ash 2 c++ oop class

class matrix
{
   public:
     int m;
     int n;
     int mat[m][n];
};  
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[错误]:无效使用非静态数据成员'matrix :: n'
在声明静态时:

class matrix
{
   public:
     static int m;
     static int n;
     int mat[m][n];    //Error
};  
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

[错误]:数组绑定在']'标记之前不是整数常量
请告诉我这些错误的含义以及如何解决此问题.

Bat*_*eba 5

C++中的数组大小必须是编译时可评估的.

编译器不知道如何处理,int mat[m][n];因为在编译时不知道值mn.

如果你想要一个好的可靠矩阵类,那么考虑在Boost中使用BLAS库.A std::vector<std::vector<int>> 可以工作,但它是一个锯齿状的矩阵,内存模型相当差.