通过指针打印值

时间:2011-04-10 00:08:16

标签: c++ pointers vector

我有一个Vertex类和一个Graph类来绘制图形。我希望在Vertex类型的Vector中存储几个顶点,即Vertex Class的对象,但是由于很少的错误,我无法直接存储顶点对象,所以我将对象的引用存储在向量中。但在显示时我希望在控制台上显示矢量名称,但我无法这样做。可能是我的语法不正确。请帮帮我。下面是我的类和main()的代码。

我的要求是在控制台上显示“v1”,“v2”,......等等。但是现在它只显示顶点上的地址。

2 个答案:

答案 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向量并输出其元素时,您将输出指针,这就是您看到地址的原因。因此,请考虑在试图打印出顶点名称的循环中取消引用这些指针。