每次我调用此方法时,信息都会被覆盖。如果我用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++;
}
答案 0 :(得分:0)
听起来就像是存储name
指针本身,它指向一个临时数组,该数组在此函数返回后的某个时刻失效。相反,您希望存储字符串数据的更持久的副本。使用std::string
而非char*
来存储字符串。如果你“不能使用字符串”作为练习的条件,那么你需要分配一个数组来存储字符串数据,就像std::string
那样。
一般情况下,除非确实需要,否则不要使用指针。我怀疑你想在这里弄乱new
,但是应该将GroupInfo
个对象直接存储在向量中(或者_groups
)。