C++ 没有要调用的匹配函数(构造函数),候选函数不同于对给定类型的引用

C++ 没有要调用的匹配函数(构造函数),候选函数不同于对给定类型的引用,c++,constructor,C++,Constructor,我的编译器以以下方式抱怨: 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::mit

我的编译器以以下方式抱怨:

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)
我有类列表和从列表继承的类矩阵。类斜接器放置在类列表中。第58行说:

miterator i( nula(ROW) );
并放置在:

Matrix Matrix::operator*( const Matrix& right ) const
矩阵是稀疏的,列表是二维环。方法nula返回给定维度中第一个边缘哨兵的迭代器。维度的全局定义为:

typedef enum { ROW, COL } Dim;
Dim operator!(Dim dim) { return dim == COL ? ROW : COL; }
列表的节点在列表中定义,并包含以下字段:

private:
    unsigned index[2];
    T num;
public:
    Node *next[2];
我很感激任何帮助,我不知道怎么了。请记住,我是一个初学者C++程序员。提前谢谢

编辑: 这可能也有帮助。从斜接器定义的内部:

    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; }
应该是

List::miterator::miterator(List::miterator const&)
临时(
numa(ROW)
在您的情况下)无法绑定到非
const
引用。更改构造函数(推荐)或不要使用临时构造函数

nula n(ROW);
miterator i(n);

我完全忘记了这个原则,非常感谢!
nula n(ROW);
miterator i(n);