我试图在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