Как передать объект по ссылке внутри параметров?

0

Чтобы получить...

void MinPriority::createArray(string targetVertex, Graph & graph)
{
    vector <list <Graph::Edge> >& adjList = graph.get_adjList();
}

для работы мне нужно перейти в Graph &graph по ссылке из другой функции:

void Graph::MST_PRIM()
{
    MinPriority priority;
    for(unsigned int i = 0; i != adjList.size(); i++)
    {
        priority.createArray(adjList[i].front().m_vertex, /*...*/);
    }
}

что бы я поставил в /*...*/ чтобы заставить createArray работать? Вот приблизительный пример того, как выглядит класс Graph:

class Graph
{
private:
    vector< list<Edge> > adjList;
public:
    Graph();
    ~Graph();
    class Edge
    {
    public:
        Edge(string vertex, int weight)
        {
            m_vertex = vertex;
            m_weight = weight;
        }
        ~Edge(){}
        string m_vertex;
        int m_weight;
    };

    vector < list < Edge > > get_adjList(){return adjList;}
    //Other functions....

};

Пожалуйста, сообщите мне, если вам нужна дополнительная информация. В основном я хочу получить доступ к adjList по ссылке и использовать его в createArray, чтобы сделать из него вектор. (в отдельном классе, конечно)

Теги:
class
oop
parameters
pass-by-reference

1 ответ

2
Лучший ответ

Кажется, все, что вам нужно, это передать *this:

priority.createArray(adjList[i].front().m_vertex, *this);
  • 0
    Спасибо, это было все, что мне было нужно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню