2012-03-17 94 views
0

嗨,我有一些私有成員C++類如下如何初始化類的私有成員在C++中

template <typename V, typename E> 
    class Vertex 
    { 
    public: 
     Vertex(); 
     ~Vertex(); 
     typedef std::pair<int, E> edgVertPair; 
     typedef std::vector<edgeVertPair> vectEdges; 
     void setVertexID(int data); 
     int getVertexID(); 
     void setEdgeVertPair(int vertID, E edge); 
     edgVertPair getEdgeVertPair();  
     void setEdgeList(edgeVertPair edgeVert); 
     vectEdges getEdgeList(); 
    private: 
     int vertexID; 
     edgVertPair evp; 
     vectEdges edgeList; 
    }; 

現在我想建立一個對即像

evp.first="someint"; evp.second="somestring";

然後將此evp推入edgeList即edgeList.push_back(evp); 現在的問題是在setter函數,我沒有這樣的事情:

template<typename V, typename E> 
    void Vertex<V, E>::setEdgeVertPair(int vertID, E edge){ 
      ...populate evp;... 
    } 

現在我不知道如何填充EVP對與vertID,邊緣。

+0

忽略你將值存儲在'evp'中並將它們添加到向量中的原因,不會'evp = make_pair(vertID,edge); edgeList.push_back(evp);'工作? – Zabba 2012-03-17 22:17:55

+0

與視覺工作室無關。未標記。 – 2012-03-17 22:38:22

+1

您有15個問題,而且沒有人回答過? – 2012-03-17 22:41:21

回答

0

感謝所有誰回答我的問題,我想通了一些搜索後。一種方法是我刪除了typedef,並在我的私人數據部分,直接聲明變量爲

std::pair<int, E> evp; 
std::vector<std::pair<int, E>> edgeList; 

並且工作正常。

另一種方式是我必須在typedef之前預先輸入關鍵字'typename'並且它工作正常。

+0

-1:刪除類型定義可能有助於智能感知,但您不應該編寫代碼來解決其限制。當你編寫代碼時,它可以幫助你,而不是教你如何編寫代碼。 – Troubadour 2012-03-21 22:12:11