1

嗨,我有一个带有一些私有成员的 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 对。

4

2 回答 2

2

用于std::make_pair填充 evp 对。

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

于 2012-03-17T22:19:22.203 回答
1

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

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

效果很好。

另一种方法是我必须在 typedef 之前添加关键字'typename',它起作用了。

于 2012-03-21T21:59:18.890 回答