我有一个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对。
答案 0 :(得分:2)
使用std::make_pair
填充evp对。
答案 1 :(得分:1)
感谢所有回答我问题的人,经过一番搜索,我想出来了。一种方法是我删除了typedef,在我的私有数据部分,直接将变量声明为
std::pair<int, E> evp;
std::vector<std::pair<int, E>> edgeList;
并且工作正常。
另一种方式是我必须在typedef之前添加关键字'typename'并且它有效。