if (objArr == NULL) {
objArr = new MyObject[1];
objArr[0] = obj;
counter++;
} else {
MyObject* tmp = objArr;
objArr= new MyObject[counter+ 1];
for (int j = 0; j < counter; ++j) {
objArr[j] = tmp[j];
}
objArr[counter] = obj;
counter++;
delete[] tmp;
}
对象有 char* name
和其他一些正确存储的数据
当我尝试循环对象数组时,它返回其他数据正常,但 char* name
为每个对象返回相同的数据(插入的姓氏)
for (int k = 0; k < playerCount; ++k) {
objArr[k].printObj();
}
打印对象();只是 cout objArr[k] getObjName()
这是我创建的 setter 和 getter:
char *MyObject::getObjName() const {
return this->objName;
}
void MyObject::setObjName(char *name) {
this->objName = name;
}
我做错了什么?
*我不能使用 vector 和字符串
最佳答案
这是常见的指针错误。 如果你的类/数据结构拥有指针并分配它,你应该实现自己的复制构造函数,为 char *name 分配新内存。 现在所有对象都指向一个字符数组,而不是拥有自己的字符数组。
如果您不明白我在说什么,请先阅读以下内容:
https://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm
关于C++ 对象数组为每个对象返回相同的 char*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40907961/