通过指针打印值

Printing values through pointers

本文关键字:打印 指针      更新时间:2023-10-16

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

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

从我所看到的,在第一个for循环中,您没有从"g1 "中获得实际值。Vertice1[i]",但试图打印指针。Vertice1的类型是vector<Vertex<VertexType, EdgeType>*>(指向顶点对象的指针向量),所以你需要改变行,使它使用->操作符来解引用指针和调用"Vert",并打印其返回值,而不是试图打印指针的值。

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

std::cout << g1.Vertice1[i]->Vert() <<endl;

看看你在g1.Vertice1向量中添加了什么:

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

vector的元素是指针,而不是Vertex对象。考虑到Vertice1被声明为指向特定类型Vertex的指针向量,这是有意义的。

当你迭代g1.Vertice1向量并输出它的元素时,你因此输出指针,这就是为什么你看到地址。因此,考虑在试图打印顶点名称的循环中解引用这些指针。