0
제 컴파일러는 다음과 같은 방법으로 불만을 지정된 형태에 대한 참조 인으로 다른 후보 :일치 기능 없음 (생성자)에 전화,
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)
나는 목록에서 상속 클래스 목록 및 클래스 매트릭스가 . 클래스 miterator는 List 클래스 내에 놓입니다. 라인 58 말한다
miterator i(nula(ROW));
및 내부에 배치되어
Matrix Matrix::operator*(const Matrix& right) const
매트릭스가 희소하고 목록 이차원 링이다. method 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 정의의 내부에서 :
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; }
나는 그 원칙에 대해 완전히 잊어 버렸습니다. 정말 고마워요! –