제목으로, ostream 참조를 취하여 인쇄하는 기능을 만들려고합니다. 컨텍스트는 이진 검색 트리의 컨텍스트입니다.ostream 참조를 가져 와서 인쇄하는 함수를 만드는 올바른 방법은 무엇입니까?
내가 너무 ostream에 경험하고 있지 않다, 나는 단지 내가 구글에서 발견 연산자 오버로딩 < <위한 기본 템플릿 예제를 기반으로 (만 학습 C++ 약 3 주 전에 시작)를 한 번 전에 사용했습니다.
내 제한된 이해와 함께 나는 내가 만든 함수로 이것을 어떻게 구현할 지 확신하지 못한다.
이것은 내가 지금까지 시도 내 제한된 지식을 바탕으로 한 것입니다, 내가 먼저 내가 기능을 만들려고 그런 기준 void write(std::ostream &out) const;
을 만들어
,std::ostream& write(std::ostream &out,node& o){
out << o.leftChild<< " " << o.val << " " << o.rightChild;
return out;
}
ieoleftChild o.rightChild는 노드의 결과를 인쇄해야합니다. o.val은 노드의 데이터입니다. 내가 위에서처럼 참조를 사용하려고하면
예상되는 결과는, 그러나 1 2 3 4과 같이해야한다, 나는 쓰기가 구현되지 않았 음을 말하는 내 IDE가 오류 메시지를 제공하고 있습니다.
그러나 참조를 메소드로 작성한 경우 결과는 공백으로 반환됩니다.
업데이트 : 참조를 제거하고 더 이상 오류 메시지가 표시되지 않습니다.
그러나 결과는 여전히 제로입니다. 이는 잘못된 구현으로 인한 것입니다.
UPDATE2 : 내가 정확하게 시도하려고하는 것은, 그것에 쓰기 기능 인쇄를하는 것입니다,
노드에서, 다음에 공백, 왼쪽 아이에 데이터를 쓰기 호출의 결과 , 공간 및 오른쪽 자식에 대한 쓰기 결과 (있는 경우)가 포함됩니다.
이 세그먼트의 모든 이전 코드는 의도 한대로 작동합니다. 변수의 경우 data
이 템플릿 인수 유형 (T
)이고 왼쪽 자식 및 오른쪽 자식은 unique_ptr<node>
입니다.
경기 수 용이성 제공 [mcve] – Barry
문제점은 ostream, 참조 또는 2 진 검색 트리 또는 노드와 관련이 없습니다. 이 함수를 정의하고 호출하는 방법에 관한 것입니다. 우리는이 함수 중 하나의 일부만 볼 수 있습니다. –
그래서 함수를 정의하고 호출하는 올바른 방법은 무엇입니까? – LovesPie