如何在c ++中初始化类的私有成员

时间:2012-03-17 22:12:27

标签: c++ std-pair

我有一个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;...
    }

现在我不知道如何用vertID,edge填充evp对。

2 个答案:

答案 0 :(得分:2)

使用std::make_pair填充evp对。

http://www.cplusplus.com/reference/std/utility/make_pair/

答案 1 :(得分:1)

感谢所有回答我问题的人,经过一番搜索,我想出来了。一种方法是我删除了typedef,在我的私有数据部分,直接将变量声明为

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

并且工作正常。

另一种方式是我必须在typedef之前添加关键字'typename'并且它有效。