문제가 있습니다. 정규 노드 구조와 노드 포인터를 저장하는 목록이 있습니다. 내가 반복자를 사용하여 같은 목록 이리저리 값을 검색하기 위해 노력하고있어 때, 나는 구조체 "노드"에 대한 반복자가 데이터 검색을 허용하지 않습니다.
#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;
운영자 우선 순위를 알아야합니다. 또한, 왜이 태그가'c'입니까? –
포인터 목록은 이중 간접 지정이며 대부분의 경우 완전히 필요하지 않습니다. 필요한 경우 (즉, 다형성 작동 코드) 스마트 포인터를 사용하십시오. – Griwes