如何在c++中从vector容器中打印类指针

how to print a class pointer from within a vector container in c++?

本文关键字:打印 指针 vector c++ 中从      更新时间:2023-10-16
class game_list
{
    public:
        string name;
};
game_list *pointer;

int main()
{
    vector<game_list*> mainVector;
    pointer=new game_list;
    cin>>pointer->name;
    mainVector.push_back(pointer);
    cout << "Hello world!" << endl;
    cout << mainVector[1];
    return 0;
}

game_list是类声明。vector<game_list*>是包含一堆game_list类指针的向量。我试图打印向量内的每个game_list的属性。到目前为止,我已经尝试过,mainVector[1].name,但似乎它不工作的方式。有什么建议吗?

您需要取消对指针的引用,就像上面所做的那样。

cout << mainVector[1]->name;

cout << (*(mainVector[1])).name;

哦,永远是对的,向量索引从0开始。要获得第一个元素,您也可以使用mainVector.front()

然而,你可能根本不想使用指针。如果您确定需要,请使用boost::ptr_vectorstd智能指针的向量。现在这段代码有一个内存泄漏

首先-索引从0开始,因此mainVector[1] -不正确。其次,如果你解引用你的指针mainVector[0]->name(*mainVector[0]).name将给出正确的值。

从您的代码中,您应该能够做到:

cout << mainVector[0]->name << endl;