我有一个Vertex类和一个Graph类来绘制图形。我希望在Vertex类型的Vector中存储几个顶点,即Vertex Class的对象,但是由于很少的错误,我无法直接存储顶点对象,所以我将对象的引用存储在向量中。但在显示时我希望在控制台上显示矢量名称,但我无法这样做。可能是我的语法不正确。请帮帮我。下面是我的类和main()的代码。
我的要求是在控制台上显示“v1”,“v2”,......等等。但是现在它只显示顶点上的地址。
答案 0 :(得分:1)
从我所看到的,在第一个for循环中,你没有从“g1.Vertice1 [i]”获得实际值,而是试图打印指针。 Vertice1的类型是vector<Vertex<VertexType, EdgeType>*>
(指向Vertex对象的指针向量),因此您需要更改该行,以便它使用 - &gt;运算符取消引用指针并调用“Vert”并打印返回,而不是尝试打印指针的值。
更改
std::cout << g1.Vertice1[i]<<endl;
到
std::cout << g1.Vertice1[i]->Vert() <<endl;
答案 1 :(得分:0)
查看您要添加到g1.Vertice1
向量的内容:
g1.Vertice1.push_back(&v1);
g1.Vertice1.push_back(&v2);
向量的元素是指针,而不是Vertex
个对象。鉴于Vertice1
被声明为指向特定类型Vertex
的指针向量,这是有道理的。
当您遍历g1.Vertice1
向量并输出其元素时,您将输出指针,这就是您看到地址的原因。因此,请考虑在试图打印出顶点名称的循环中取消引用这些指针。