2013-03-05 1 views
1

나는 자신의 반복자를 구현하고 작성하는 것에 익숙해지기 위해 간단한 Set 클래스를 프로젝트로 사용하고있다. 나는 Set 클래스를 완벽하게 완성 시켰고, Iterator를 생성하는 좋은 방법은 내부 클래스 Iterator를 사용한다는 것입니다. 이것은 내가 한 일입니다.공개 멤버 함수는 내부 클래스를 반환합니까?

#include "homemadeSet.h" 
Set::Set{ 
//etc 
} 

Set::Iterator::Iterator(){} 

Set::Iterator Set::begin(){ 

    //return Iterator 
} 

여기 내 코드에서 실제로 잘린 부분이 있습니다. 집합의 public 멤버 함수 begin()에 내부 클래스 반복자 (Iterator)를 반환하려고합니다.

편집 : 죄송합니다, 제 질문은 내부 클래스를 반환하기위한 구문은 무엇입니까?

답변 주셔서 감사합니다. 때로는 가장 쉬운 해결책은 당신을 피할 수 있습니다 ^^.

+0

정확히 무엇을 고민하고 있습니까? Set :: Iterator가 public으로되어있는 한, 작동해야합니다. –

+0

지금까지 좋은 생각처럼 들립니다. 문제 또는 질문은 무엇입니까? – aschepler

+0

"this"포인터에 대해 묻고 있습니까? –

답변

2

Set::Iterator 유형의 객체를 적절한 생성자를 사용하여 만들고 반환하십시오. 예를 들어, Iterator 경우 생성하거나 반환 방법으로 최상위 클래스 다르지 않다

Set::Iterator Set::begin() const { 
    return Iterator(mFirstElement); 
} 
1

내부 클래스를 할 수

public: 
    Iterator(); 
    explicit Iterator(InternalStuff*); 

있습니다. 외부 클래스의 이름은 내부 클래스의 정규화 된 이름의 일부가되므로 범위 확인 연산자 ::을 사용하여 이름을 작성해야합니다.

Set::Iterator Set::begin(){ 
    Set::Iterator res; 
    // prepare the Iterator, for example 
    // res.setPosition(0); 
    return res; 
} 
관련 문제