У меня довольно странная ошибка при попытке реализовать настольную игру в QT. Это мой второй раз с той же проблемой, и теперь я думаю, что пришло время спросить здесь.
Я все еще в логической части игры, в которой есть класс с именем Field и класс с именем Board. Класс 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();
}
И после того, как я получил массу странных ошибок, я решил записать в консоль фактическое число элементов, ссылку на фактический элемент, а после двух циклов - размер вектора.
Результат был довольно странный, я не получил никаких ошибок, но иногда он добавлял все мои элементы, иногда он останавливался на случайном количестве элементов, а размер вектора даже не печатался так:
результат 1 (нормальный):
0 0xa173a8
...
24 0x701c18
25
результат 2 (каждый раз с разным количеством элементов):
0 0xa173a8
...
12 0xa17548
// и без размера вектора, я предполагаю, что функция получила возврат; из-за чего-то
Я пробовал и с QVector, и с std :: vector, это одно и то же. Пожалуйста, если кто-то понял, в чем может быть проблема, скажите мне!
Спасибо, и извините за мой английский!
EDIT
Весь мой код здесь:
field.h: http://paste2.org/p/1937231
field.cpp: http://paste2.org/p/1937232
player.h: http://paste2.org/p/1937238
player.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