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

我不明白爲什麼這行被稱爲複製構造函數,雖然有我的構造函數與參數。爲此設計專門編寫的參數構造函數參數。 我發現的關於類似問題的所有內容都是使用typename。但它並沒有解決我的問題。使用迭代器模板類作爲函數的參數

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()); 
    } 

其中

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

錯誤:

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

O,對不起。我沒有注意到const。謝謝。 – ggoha

+0

@ggoha非常歡迎您,如果您發現我的回答有幫助,請考慮接受它。謝謝。 –

相關問題