2013-10-14 4 views
1
return Graph_iterator_Vertex(Vertexs.begin()); 

매개 변수가있는 생성자가 있지만이 행을 복사 생성자라고하는 이유를 알 수 없습니다. 이 설계를 위해 특별히 작성된 arguments 생성자 매개 변수입니다. 비슷한 문제에 관해서 제가 발견 한 모두는 typename의 사용법입니다. 그러나 그것은 내 문제를 해결하지 못했습니다.반복자 템플릿 클래스를 함수의 매개 변수로 사용하기

std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>> Vertexs; 

오류

struct Graph_iterator_Vertex 
    { 
    private: 
     typename std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>::iterator iterator; 

    public: 

     Graph_iterator_Vertex(typename std::_Vector_const_iterator<std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>> iterator_) 

     { 
      iterator=iterator_ 
     } 
    }; 

    const Graph_iterator_Vertex begin(void) const 
    { 
     return Graph_iterator_Vertex(Vertexs.begin()); 
    } 

:

error C2440: <function-style-cast>: can not be converted std::_Vector_const_iterator<_Myvec>"in "Graph<Type_Of_Value_Vertex,Type_Of_Value_Edge>::Graph_iterator_Vertex" 
+1

'iterator'와'const_iterator'의 차이점을 알고 계십시오. 또한'const' 멤버 함수 (코드에서'begin'과 같은)가 멤버 데이터 (예 :'Vertexs'; – Nawaz

답변

1

사용한다

std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>::const_iterator 

대신

std::_Vector_const_iterator<std::vector<Vertex<Type_Of_Value_Vertex, Type_Of_Value_Edge>>> 

을 함수 매개 변수 유형으로 사용하십시오.

+0

사용 해보았습니다. 결과는 비슷합니다. – ggoha

+0

오, 죄송합니다. 나는 const를 알아 차리지 못했다. 고맙습니다. – ggoha

+0

@ggoha 대단히 환영합니다. 내 대답이 도움이된다고 생각한다면 받아 들여야합니다. 감사. –