Печать значений через указатели - PullRequest
2 голосов
/ 10 апреля 2011

У меня есть класс Vertex и класс Graph для рисования графика.Я хочу хранить несколько вершин, т.е. объектов класса вершин, в векторе типа Vertex, но из-за нескольких ошибок я не смог сохранить объекты вершин напрямую, поэтому я храню ссылки на объекты в векторах.Но во время отображения я хочу отобразить имя вектора на консоли, чего я не могу сделать.Может быть, мои синтаксисы неверны.Пожалуйста, помогите мне.Ниже приведен мой код для классов и main ().

Мое требование - отображать "v1", "v2", ... и так далее на консоли.Но сейчас это только отображение адресов в вершинах.

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

Из того, что я вижу, в первом цикле for вы не получаете фактическое значение из "g1.Vertice1 [i]", но пытаетесь напечатать указатель. Тип Vertice1 - vector<Vertex<VertexType, EdgeType>*> (вектор указателей на объекты Vertex), поэтому вам нужно изменить строку так, чтобы она использовала оператор -> для разыменования указателя и вызова «Vert» и печатала возвращаемый вместо того, чтобы пытаться напечатать значение указателя.

Изменение

std::cout << g1.Vertice1[i]<<endl;

до

std::cout << g1.Vertice1[i]->Vert() <<endl;
0 голосов
/ 10 апреля 2011

Посмотрите, что вы добавляете к вектору g1.Vertice1:

g1.Vertice1.push_back(&v1);
g1.Vertice1.push_back(&v2);

Элементы вектора являются указателями, а не Vertex объектами. Что имеет смысл, учитывая, что Vertice1 объявлен как вектор указателей на конкретный тип Vertex.

Когда вы перебираете вектор g1.Vertice1 и выводите его элементы, вы, следовательно, выводите указатели, поэтому вы видите адреса. Поэтому рассмотрите возможность разыменования этих указателей в цикле, который пытается распечатать имена вершин.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...