2014-01-18 1 views
-2

문제가 있습니다. 정규 노드 구조와 노드 포인터를 저장하는 목록이 있습니다. 내가 반복자를 사용하여 같은 목록 이리저리 값을 검색하기 위해 노력하고있어 때, 나는 구조체 "노드"에 대한 반복자가 데이터 검색을 허용하지 않습니다.

#include <list> 
#include <iostream> 

using namespace std; 

struct node 
{ 
    int data; 
    node* next; 
}; 

int main() 
{ 
    node * n = new node; 
    n->data = 3; 
    n->next = NULL; 

    list<node*> l; 
    l.push_front(n); 
    list<node*>::iterator myIt = l.begin(); 

    cout << *myIt->data << endl; // <-- the compiler shows an error here "Member reference base type "node*" is not a structure or union" 
} 

은 아마도 내가 반복자의 사용에 혼란 스러워요 ... 그렇게 할 수 아니에요. 해결 방법을 제안 해 주시겠습니까?

건배 !!! 당신이 필요로하는, 당신은 실제로 약간 혼란스러워 cout << (*myIt)->data << endl;

+0

운영자 우선 순위를 알아야합니다. 또한, 왜이 태그가'c'입니까? –

+0

포인터 목록은 이중 간접 지정이며 대부분의 경우 완전히 필요하지 않습니다. 필요한 경우 (즉, 다형성 작동 코드) 스마트 포인터를 사용하십시오. – Griwes

답변

0
cout << *myIt->data << endl; 

당신은 연산자 우선 순위 additionnal()

cout << (*myIt)->data << endl; 

안녕,

프랜시스

4

문제가 필요합니다 다음 작업을 수행하십시오.

cout << (*myIt)->data << endl; 

먼저 포인터를 역 참조하십시오. 그런 다음 데이터를 가져올 수 있습니다.

관련 문제