루프

2013-06-19 4 views
1

는 ANonTrivialContainer의루프

class Foo 
    { 
    private: 
     ANonTrivialContainer bar; 
     OtherData baz; 
    }; 

반복자 같은 클래스 양방향성하자. 바깥에서 바의 내용으로 물건을 만들고 싶습니다. 무엇 Allowing access to container objects in C++의 허용 대답처럼 ANonTrivialContainer에 대한 반복자를 반환하는 beginBar() 및 해당 endBar()를 제공

  • 의 prefferable입니다. 이렇게하면 작동하지만 내부 세부 정보가 호출자에게 노출됩니다 (하위 클래스에 대한 명시 적 호출이 필요하기 때문에).
  • 모든 호출을 내부 반복기에 전달하는 사용자 정의 반복기를 제공합니다. 이제 beginBar와 endBar가 대신 사용자 정의 반복자를 반환합니다.
  • 파라미터로서 펑 복용 콜백 클래스

답변

1

I는 visitBars 일반적인 방법을 제공하는 것이다의 목적에 대한 참조를 소요의 foreach 제공 방법.

template<typename F> void visitBars(F visit) { 
    for(auto b: bar) 
    visit(b); 
}