1
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但似乎它不起作用。有什么建议吗?

4

3 回答 3

2

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

cout << mainVector[1]->name;

或者

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

哦,ForEveR 做对了,向量索引从 0 开始。要获取第一个元素,您还可以使用mainVector.front().

但是,您可能根本不想使用指针。如果您确定这样做,请使用智能指针boost::ptr_vector的或向量。std现在这段代码有内存泄漏

于 2013-05-17T10:11:42.970 回答
2

首先 - 索引从零开始,所以mainVector[1]- 不正确。其次 - 如果您取消引用您的指针mainVector[0]->name(*mainVector[0]).name将给出正确的值。

于 2013-05-17T10:12:11.033 回答
0

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

cout << mainVector[0]->name << endl;
于 2013-05-17T10:16:00.880 回答