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();
}
printObj();只是cout objArr [k] getObjName()
这是我创建的setter和getter:
char *MyObject::getObjName() const {
return this->objName;
}
void MyObject::setObjName(char *name) {
this->objName = name;
}
我做错了什么?
*我不能使用矢量和字符串
答案 0 :(得分:1)
这是常见的指针错误。 如果你的类/数据结构拥有指针并分配它,你应该实现自己的拷贝构造函数,它将为char * name分配新的内存。 现在所有对象都指向一个char数组,而不是拥有自己的char数组。
如果你不理解我正在谈论的内容,请首先阅读:
https://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm