트리의 각 노드가 벡터의 하위 노드에 대한 포인터를 저장하는 트리 데이터 구조를 포함하는 프로젝트에서 작업하고 있습니다. 내 기능 중 하나, 나는 반복자를 사용하여 벡터를 통해 루프를 시도하고 있지만, 내가 같은 임시 변수에 간접 참조 반복자를 할당해야, 일하러 :왜이 역 참조 된 반복자를 임시 값에 할당해야합니까?
std::vector<Node*>::iterator p;
for (p = n->children.begin(); p < n->children.end(); p++)
{
Node* t = *p;
// if board is complete, mark as such and update score
if (t->m_board.isComplete())
{
// ...
}
}
을 내가하려고하면 이 같은 코드를 임시 값없이 작성하면 : if (*p->m_board.isComplete())
오류 메시지 "표현식에 포인터 유형이 있어야합니다.이 경우가 아닙니까? 내 반복기를 역 참조하지 않아야 Node 클래스에 대한 포인터를 리턴해야합니까?
없음을 오버로드
->
사용할 수있는 것을 :이 경우를 들어, 사용은 당신의 우선 순위를 상태로 중괄호 "직접". 너 해봤 니? http://rextester.com/ZCZWLA76469 – songyuanyao요점은 iterator가 포인터를 가리키고 있기 때문에'operator * '를 사용하여 역 참조를하고'operator->'를 사용해야한다는 것입니다. iterator는'Node **'처럼 이미지 할 수 있습니다. BTW : 난 downvoter 아니에요. :) – songyuanyao
@songyuanyao, 오, 알겠습니다. 내 감독은 ...--). 감사. – WhiZTiM