2011-10-15 4 views
-1

클래스를 템플릿 클래스로 작성하려고합니다. Question에서 대답했듯이, 을 std::set이라는 용어로 구현하려고했습니다. 여기까지 지금까지 썼습니다.다른 클래스의 반복자 생성자 호출

#include <set> 

    template <class T, 
      class Container = std::set<T> > 
    class graph { 
    public: 
     class iterator { 
     public: 
      iterator() { 
       std::set<T>::iterator(); 
      } 
      iterator(const iterator&) { 
       std::set<T>::iterator(); 
      } 
      ~iterator() { 
       std::set<T>::~iterator(); 
      } 

은 내가 여기 찾고 있어요 것은 graph::itertor가 호출 될 때마다, 내부적으로는 set::iterator라고해야하다이 방법을 확인하고, ~iterator()은 왜 컴파일지고 있지 않습니다.

+0

여기서 생성자를 호출하지 않고, 임시 객체를 생성하고 있습니다.이 객체는 아무 것도하지 않습니다. –

+0

예제가 완료되지 않았습니다. 너 정확히 뭘 하려구? –

답변

2

그래프 클래스에 반복자를 제공하고 그래프의 반복자는 기본 컨테이너 유형의 반복자에 불과하다고 생각합니다. 그렇다면, 당신은 실제로이 일을해야

template <class T, class Container = std::set<T> > 
class graph 
{ 
public: 
    typedef typename Container::iterator iterator; 
    typedef typename Container::const_iterator const_iterator; 

    //... 
}; 

코드에 관해서는, 나는 std::set<T>::iterator() 임시 객체를 생성하고, 임시가 전체 표현의 끝에 파괴됩니다 것을 말할 것입니다. 그 이야기는 거기서 끝납니다. 그리고 std::set<T>::~iterator()도 컴파일되지 않습니다.