我試圖在QT中實現棋盤遊戲時出現了一個非常奇怪的錯誤。這是我第二次,有同樣的問題,現在我想是時候在這裏問問了。向量push_back隨機發生
我還在遊戲的邏輯部分,它有一個名爲Field的類和一個名爲Board的類。理事會類具有QVector < Field* > fields
屬性,該屬性是Field
指針的向量。這是問題。我有一個函數,應該用新的字段上傳這個向量。這裏是我的來源,這是很簡單的:
void Board::addFields()
{
for(int i = 0; i<size; i++) //the board's size is size x size
{
for(int j = 0; j<size; j++)
{
Field * f = new Field();
fields.push_back(f);
//qDebug()<<i*size+j<<" "<<f;
}
}
//qDebug()<<fields.size();
}
後,我得到了一噸奇怪的錯誤,我決定寫控制檯元素的實際數量,實際元素的參考,並經過兩個循環的矢量大小。
結果是很奇怪,我沒有錯誤,但somtimes它加了我所有的元素,有時停在元素的隨機數,甚至得到了打印出來這樣的載體犯規的大小:
結果1(正常):
0 0xa173a8
...
24 0x701c18
結果2(???用不同數量的元素每次):
0 0xa173a8
...
12 0xa17548
//和無矢量大小,我假定函數得到的返回;因爲有東西
我試了QVector和std :: vector,它是一樣的。請如果有人有任何想法,可能是什麼問題,告訴我!
謝謝,對不起我的英語!
編輯
我所有的代碼是在這裏:
field.h:http://paste2.org/p/1937231
field.cpp:http://paste2.org/p/1937232
player.h:http://paste2.org/p/1937238
球員。 cpp:http://paste2.org/p/1937239
board.h:http://paste2.org/p/1937234
board.cpp:http://paste2.org/p/1937235
main.cpp中:http://paste2.org/p/1937243
如何以及在哪裏'fields'聲明? – UmNyobe 2012-03-12 10:26:05
字段在Board類中聲明爲私有屬性。 (私人:QVector字段;) –
2012-03-12 10:29:26
你能發佈更多的代碼嗎?你得到了哪些奇怪的錯誤,他們在哪裏? – UmNyobe 2012-03-12 10:31:13