내가하고있는 (뭔가)이 :C++에서 참조로 전달 된 포인터를 역 참조하는 방법은 무엇입니까?
void insert(Node*& node, string val, Node* parent)
{
if (node == NULL)
instantiateNode(node, val, parent);
else
insert(node->child, val, node);
}
문제는, instantiateNode(..., parent)
원래 *&node
수정하려면 *parent
설정할 때 함수로 전달되는 것 같습니다. instantiateNode()
는 node
을 변경하기 위해 을 로 가정했지만 parent
을 변경하면 부모로 설정되는 노드가있는 것보다 의미가 없으며 작동하지 않습니다. 조금도.
포인터 참조를 사용하여 귀찮게하는 이유는 특별한 경우를 제거하고 수행해야 할 오류 검사의 양을 크게 줄이기 때문입니다. 라인 카운트와 사소한 알고리즘 - 쇄 중복을 줄이기 위해이 작업을 수행하고 있기 때문에 코드 줄 수를 두 배로 늘릴 수 있습니다. 하지만 나는 차라리 그렇게하지 않을 것입니다. 은 같은 참조를 가리키는 새로운 포인터를 얻기 위해 포인터 참조를 역 참조하는 방법이되어야합니다. 그리고 실제로 *&node
에서 *parent
을 통한 패스가이를 수행해야한다고 생각했지만 분명히 gcc가이를 최적화했습니다.
전체 코드를 게시 할 수 있으며 달성하고자하는 것은 무엇입니까? 이것은 꽤 간단한 삽입처럼 보입니다. 왜 포인터 참조를 다루고 있습니까? – Uri
질문이 불분명합니다. instantiateNode를 게시하지 않으시겠습니까? 그것은 노드 포인터를 수정해야하고 (그리고 모든 것이 부모를 수정할 수 있어야합니다) 오히려 나에게 기대할 수 있습니다. – UncleBens
찾고있는 코드 스 니펫의 동작이 어떻게 변경되었는지는 분명하지 않습니다. 나는'node'를 참조로 전달하는 전체 지점이 함수 내부에서 수정 될 수 있다고 가정합니다. 또한 함수 이름'instantiateNode'는 아마도 매개 변수를 수정하여 새 노드를 만들 것이라고 제안하는 것 같습니다. 그리고 포인터 복사에 대해서'Node * copy = node; '를 의미합니까? – sth