矢量覆盖对象指针

时间:2015-02-24 02:57:19

标签: c++

每次我调用此方法时,信息都会被覆盖。如果我用name = "greg"来调用这个函数,那么它会输出greg,如果我然后输入" carl"它会c carlcarl。构造函数为空,并且在标题中声明了group和_groups。

我被困在这里大约6个小时,我不知所措。有人可以向我解释如何解决这个问题吗?它没有显示,但" group"是一个对象指针。我把它作为一门大学课程,并且几乎是自学成才,我必须遵循严格的指示,使用什么和不使用什么。我无法使用字符串。

void GroupDB::addGroup(char* name)
{

    group = new GroupInfo(name, _nextGid++);
    _groups.push_back(group);
    for(int i = 0; i < _size; i++)
    {
        cout << (*_groups.at(i)).getGroupName();
    }
    _size++;
}

1 个答案:

答案 0 :(得分:0)

听起来就像是存储name指针本身,它指向一个临时数组,该数组在此函数返回后的某个时刻失效。相反,您希望存储字符串数据的更持久的副本。使用std::string而非char*来存储字符串。如果你“不能使用字符串”作为练习的条件,那么你需要分配一个数组来存储字符串数据,就像std::string那样。

一般情况下,除非确实需要,否则不要使用指针。我怀疑你想在这里弄乱new,但是应该将GroupInfo个对象直接存储在向量中(或者_groups)。