无效使用非静态数据成员

时间:2015-12-10 08:36:39

标签: c++ class oop

class matrix
{
   public:
     int m;
     int n;
     int mat[m][n];
};  

我收到此错误:

  

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

class matrix
{
   public:
     static int m;
     static int n;
     int mat[m][n];    //Error
};  

我收到此错误:

  

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

2 个答案:

答案 0 :(得分:5)

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

编译器不知道如何处理Chaise[] chair = new Chaise[this.actual+1]; /// Let's suppose here you fill your array with elements Chaise firstChair = chair[0]; // Here I select the first chair if(firstChair != null) Thread t1 = new Thread(new ThreadStart(firstChair.fabricationbois)); ,因为在编译时不知道int mat[m][n];m的值。

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

答案 1 :(得分:2)

问题在于,当您声明$diff = Compare-Object -ReferenceObject $first -DifferenceObject $second -Property Name, Length, LastWriteTime, VersionInfo -PassThru | Select Name, Length, LastWriteTime, sideindicator,@{n = "path"; e ={ $_.fullname }}, @{n = "VersionInfo"; e = { $_.VersionInfo.Productversion } 时,成员变量matm实际上并不存在。在创建n类的实例之前,它们不存在。但是,由于C ++中的数组在编译时必须具有固定的大小,因此不会有太大的好处。

如果您想在运行时设置matrix的大小,那么这里的简单解决方案是使用std::vectorstd::vector个对象。

例如。

mat