[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/

10-10 21:37
查看更多