如何初始化类的私有成员在C++中
嗨,我有一些私有成员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,边缘。
感谢所有谁回答我的问题,我想通了一些搜索后。一种方法是我删除了typedef,并在我的私人数据部分,直接声明变量为
std::pair<int, E> evp;
std::vector<std::pair<int, E>> edgeList;
并且工作正常。
另一种方式是我必须在typedef之前预先输入关键字'typename'并且它工作正常。
-1:删除类型定义可能有助于智能感知,但您不应该编写代码来解决其限制。当你编写代码时,它可以帮助你,而不是教你如何编写代码。 – Troubadour 2012-03-21 22:12:11
使用std::make_pair
来填充evp对。
感谢您的链接,但我面临一个不同的问题,因为我有一个templatised类,不知道是否简单地使用evp.first或evp.second将填充对,因为intellisense说“没有成员......”如此我很困惑。 – Naphstor 2012-03-18 03:31:10
忽略你将值存储在'evp'中并将它们添加到向量中的原因,不会'evp = make_pair(vertID,edge); edgeList.push_back(evp);'工作? – Zabba 2012-03-17 22:17:55
与视觉工作室无关。未标记。 – 2012-03-17 22:38:22
您有15个问题,而且没有人回答过? – 2012-03-17 22:41:21