2016-12-01 62 views
1
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返回相同的对于每个对象(插入的姓氏)C++对象数组返回相同的字符*为每个对象

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

该错误是最有可能在你存储的方式,在'MyObject'类管理'objName' 。通过发布课程代码,您可以获得更多帮助。 –

回答

1

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

如果你没有得到什么,我说什么,在第一次读到这样的:

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

+0

谢谢!很有帮助 – izik