[A,0]->[B,3]
[B,0]->[A,3]
这是我计划使用的数据结构,其中Y坐标是向量,x坐标是列表。列表中的每个节点都将包含一个字符串和一个整数(如上所示)。让我们假装这是一个包含链表向量的声明的类,我们称其为Graph,因为这是一个图形分配。读。]
class Graph
{
public:
Graph(){...}
~Graph(){...}
private:
class Edge
{
public:
Edge(string vertex, int weight)
{
m_vertex = vertex;
m_weight = weight;
}
~Edge(){...}
string m_vertex;
int m_weight;
};
vector< list < Edge > > adjacency_list; //the vector of linked lists
};
在完全不同的.h文件中,我将声明此类:
class Modify_Graph
{
public:
void access_Edge();
//......
private:
//......
};
这包含在Modify_graph.cpp文件中
void Modify_Graph::access_Edge()
{
adjacency_list adjList;
cout << "The very first vertex is: ";
cout << adjList[0].front().m_vertex << endl;
}
当我编译它告诉我找不到'adjacency_list'时,有没有办法我可以得到它?在一个更复杂的程序中,我尝试通过引用传递它,返回它和其他东西,但是似乎没有一个起作用。我完全不确定该怎么办。
最佳答案
您需要从中访问adjacency_list
的Graph实例,以及(如果是私有的)访问成员的方法,例如就像是
vector< list < Edge > > Graph::GetAdjacencyList()
{
return adjacency_list;
}
此外,您还需要在Graph中至少设置
Edge
或在public
之外声明它。如果将其保留为公共内部类,则函数原型将为
vector< list < Graph::Edge > > Graph::GetAdjacencyList().
该功能的使用将对
void Modify_Graph::access_Edge()
{
vector< list < Graph::Edge > > adjList = m_graph.GetAdjacencyList(); //m_graph being a member of type Graph
cout << "The very first vertex is: ";
cout << adjList[0].front().m_vertex << endl;
}
关于c++ - 如何访问链表的私有(private) vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20704511/