我有一个模板方法,我试图将对象放入数组中。我继续得到标题错误。以下是我的以下代码:
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]'不可分配”
答案 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 ...
}