数组类型'float [size]'不可分配

时间:2018-01-24 00:51:22

标签: c++

我有一个模板方法,我试图将对象放入数组中。我继续得到标题错误。以下是我的以下代码:

template <class Object>
void SparseMat<Object>::showSubSquare(int start, int size) {
   for (int rowIndex = start; rowIndex < start + size; rowIndex++) {
      Object objectsInRow[size];
      FHlist<MatNode<Object>> wantedRow = matrix[rowIndex];
      for (iterator<MatNode<Object>> iter = wantedRow.begin(); iter != wantedRow.end(); ++iter) {
          MatNode<Object> m = *iter;
          objectsInRow[m.getCol()] = m.data; //ERROR
      }
      for (int colIndex = start; colIndex < start + size; rowIndex++) {
         if (objectsInRow[colIndex] == NULL) {
           cout << defaultValue << " ";
         }
         else {
           cout << objectsInRow[colIndex] << " ";
         }
      }
      cout << endl;
   }
}

作为参考,m.getCol()只返回一个int,因此不会导致错误。此外,矩阵是列表的向量,FHlist是具有相同基本效用的自实现列表。

我对模板功能的使用如下:

typedef SparseMat<float> SpMat;

int main()
{
   SpMat mat(MAT_SIZE, MAT_SIZE, 0); 

   mat.showSubSquare(0, 15);
}

确切的错误是“错误C3863:数组类型'float [size]'不可分配”

1 个答案:

答案 0 :(得分:0)

编译时'size'不是const,这会导致崩溃;

计划A:

用std :: vector改变它,

B计划:

使用“new type [size]”

计划C:

template <int _size> // this is the const value for the compiling time
void func()
{
   type array[_size];
   // your code ...
}