2016-12-01 64 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