목록 클래스에 대한 반복기를 만듭니다. 반복자는 참조 연산자가 있습니다역 참조는 ptr-> operator *()에서는 작동하지만 * ptr에서는 작동하지 않습니다.
T& operator*() const {
return this->currentNode->data;
}
반복자 사용하려고 시도하는 동안 :
for(; list->begin() != list->end; (*list_iter).operator++())
{
cout << list_iter << endl;
cout << list_iter->operator*() << endl;
//cout << *list_iter << endl; //not working
}
주석으로 라인 "이진 experssion의 ostream에와 myList에 :: 반복자에 유효하지 않은 피연산자"라고합니다. 마찬가지로 (* list_iter) .operator ++()에서 list_iter ++ 또는 (* list_iter) ++로 변경하면 비슷한 오류가 발생합니다. 나는 무슨 일이 일어나고 무슨 생각
이 같은 것입니다 :
int num1 = 3;
int *num2 = new int;
*num2 = 3;
이 경우, NUM1는 == * NUM2 ... * NUM2은 비록 NUM2은 (모두 정수) NUM1 기능적으로 유사하다 정수에 대한 포인터 인 * num2는 정수로 만듭니다.
그래서에서 :이 경우
MyList list1();
MyList *list2 = new MyList();
, 나는 기대한다 "*리스트 2" "*의 NUM2는"NUM1과 유사 것과 같은 방식으로 목록 1과 유사하게? num2가 dereferencer를 호출하거나 MyList을 MyList로 변환하려고합니까?
여기에서 무슨 일이 벌어지고 있는지 정말 고민하고 있습니다. 감사!
I을 작고 완전한 코드 예제를 포함해야한다고 생각합니다. 게시 한 글에서 무엇이 잘못되었는지 명확하지 않습니다. – Eljay