在写《数据结构--c++与面向对象的途径》第四章101页matrix实现代码的时候,出现众多问题,matrix类申明如下:
template class matrix {
public:
matrix(unsigned numofRows,unsigned numofCols);
matrix(unsigned numofRows,unsigned numofCols,T initValues);
~matrix();
vector& operator[](unsigned index) const;
int numberRows() const;
int numberColumns() const;
private:
vector *> rows;
};
而vector类的构造函数只有三个:
vector(unsigned numElements);
vector(unsigned numElements,T initValue);
vector(const vector &source);
这就导致一个找不到vector()构造函数的错误,因为用vector vt;构造一个vector实例时,需要调用没用参数的构造函数,但前面没有定义。
也就是说,矩阵matrix中,列数已在构造函数的实现中生成,但行数,也就是rows这个矩阵的长度却没有给出,因此需要对书上 的代码做修改补充。
最后,如题,由于粗心的将第一个构造函数写成matric,结果出现:
ISO C++ forbids declaration of ‘matric’ with no type错误,找了半天,罪过!
真实要注意构造函数如果没有和类名相同,包括大小写也要相同,不然报这个错。或者是普通函数没有加返回类型,同样处理。
以此作为备忘笔记。加油!!
阅读(38370) | 评论(0) | 转发(0) |