我的编译器以下列方式抱怨:
Matrix.cpp:58: error: no matching function for call to ‘List::miterator::miterator(List::miterator)’
List.h:99: note: candidates are: List::miterator::miterator(List::miterator&)
List.h:98: note: List::miterator::miterator(List::Node*, Dim)
List.h:97: note: List::miterator::miterator(Dim)
我有继承自 List 的类 List 和类 Matrix。miterator 类放置在类 List 中。第 58 行说:
miterator i( nula(ROW) );
并放置在里面:
Matrix Matrix::operator*( const Matrix& right ) const
矩阵是稀疏的,List 是一个二维环。方法 nula 返回给定维度中第一个边缘标记的迭代器。该维度在全球范围内定义为:
typedef enum { ROW, COL } Dim;
Dim operator!(Dim dim) { return dim == COL ? ROW : COL; }
列表的节点在 List 中定义并包含以下字段:
private:
unsigned index[2];
T num;
public:
Node *next[2];
我会很感激任何帮助,我不知道出了什么问题。请记住,我是一名初学者 C++ 程序员。提前致谢。
编辑:这也可能有帮助。从 miterator 定义的内部:
miterator( Dim dir ) { direction_flag = dir; }
miterator( Node *n, Dim dir ) { node = n; memory = n; direction_flag = dir; }
miterator( miterator &i ) { node = i.node; memory = i.memory; direction_flag = i.direction_flag; }
~miterator() {}
inline bool operator==( const miterator& i) const { return node == i.node; }
inline bool operator!=( const miterator& i) const { return node != i.node; }
inline miterator& operator=( const miterator i ) { node = i.node; memory = i.memory; return *this; }