2014-05-20 4 views
-3

나는 여기 며칠 동안 붙어있다. 누구든지 Row 클래스의 toString 메서드를 살펴볼 수 있습니다. 어떻게 포인트 트리에서 모든 포인트를 검색하고 포인트에서 char 값을 얻을 수 있습니까? 벡터 나 배열에서 for 루프를 사용하고 find (points [i])와 같은 것을 할 수 있다는 것을 알고 있습니다. 그러나 여기에는 실마리가 없습니다.트리에서 모든 단일 요소를 검색하는 방법은 무엇입니까?

**std::string toString() const 
    { 
     string s; 
     for(int i = 0; i != points.size(); i++) 
     { 
     //Maybe use points.find(???) here to retrieve the point 
     s.push_back(point.getType()); //Just for demonstration, this does not work 
     return s; 

     } 
    }** 
}; 

그래서 binNode binTree 클래스를 수정할 수 없습니다. print() 메서드는 새로운 행의 모든 ​​요소를 ​​인쇄하기 때문에 Point 클래스에서 print 메서드를 사용할 수 없습니다. 그러나 우리는 모든 점에서 char 값을 가져와 모든 점의 모든 char 값을 String에 첨부해야합니다. 힌트를 주셔서 대단히 감사합니다!

+0

'Point 클래스에서 print 메소드를 사용할 수 없습니다.''Point' 클래스에는'print' 메서드가 없습니다. – NirMH

+0

주 기능을 추가 할 수 있습니까? 'Point' 또는'Row' 클래스를 수정할 수 있습니까? ('binNode'와'binTree'가 문제의 입력으로 주어 졌다고 가정하십시오.) – NirMH

+0

안녕하세요. 당신의 답변에 감사드립니다. main 메서드를 추가했고 실제로 Square 클래스가 있습니다. 그래서 내가해야할 첫 번째 단계는 파일의 char 행을 구성하는 사각형을 읽고 사각형을 화면에 인쇄하는 것입니다. – Dorisacat

답변

1

binNode 템플릿은 실제로 어린이를 노출시키지 않으므로 이러한 종류의 사용을 지원하지 않습니다. 또한 iterator을 제공하지도 않습니다. 따라서 클래스 외부의 코드에서 트리를 탐색하는 것은 불가능합니다. 아이들은 심지어 하위 클래스에 보이지 않으므로 그렇게 확장 할 수 없습니다.

당신은 해키 얻을 PointbinNode 템플릿을 전문으로 출력을 방출하도록 강제 할 수있는 string 글로벌 :

std::string output; // a global 

template <> 
class binNode<Point> { 
    void print() const { 
     if (left != NULL) left->print(); 
     output += nodeData.getType(); 
     if (right != NULL) right->print(); 
    } 
}; 

// in some function 
output.clear(); // remember to clear previous output 
points.print(); // the string now has the output from `print` 

당신도 별도의 bintreeprint 다중 스레드 호출이있는 경우 물론이 의지가 작동하지 에스.

이러한 기능을 올바르게 구현하려면 bintreebinNode을 수정해야합니다.

+0

답장을 보내 주셔서 감사합니다. 그래서 트리로 구현하기가 어렵고 나무와 노드 클래스를 수정할 수 없다고 생각하는 이유입니다. ( – Dorisacat

+1

@user3226289, 어렵고 불가능하지만 (여러 가지 이유로 좋지 않은 해킹 솔루션 제외). – user2079303

관련 문제