C ++对象数组为每个对象返回相同的char *

时间:2016-12-01 10:18:38

标签: c++ arrays pointers

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;
}

我做错了什么?

*我不能使用矢量和字符串

1 个答案:

答案 0 :(得分:1)

这是常见的指针错误。 如果你的类/数据结构拥有指针并分配它,你应该实现自己的拷贝构造函数,它将为char * name分配新的内存。 现在所有对象都指向一个char数组,而不是拥有自己的char数组。

如果你不理解我正在谈论的内容,请首先阅读:

https://www.tutorialspoint.com/cplusplus/cpp_copy_constructor.htm