gpt4 book ai didi

c++ - vector push_back 随机发生

转载 作者:行者123 更新时间:2023-11-28 08:08:35 28 4
gpt4 key购买 nike

尝试在 QT 中实现棋盘游戏时,我遇到了一个非常奇怪的错误。这是我第二次遇到同样的问题,现在我想是时候在这里提问了。

我还在游戏的逻辑部分,它有一个名为 Field 的类和一个名为 Board 的类。 Board 类有一个 QVector < Field* > fields属性,它是 Field 的 vector 指针。这就是问题所在。我有一个函数应该用新字段上传这个 vector 。这是我的来源,非常简单:

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();
}

在出现大量奇怪的错误后,我决定将元素的实际数量、实际元素的引用以及两个循环后 vector 的大小写入控制台。

结果很奇怪,我没有出错,但有时它会添加我所有的元素,有时它会停在随机数量的元素处,而且 vector 的大小甚至不会像这样打印出来:

结果 1(正常):

0 0xa173a8

...

24 0x701c18

25

结果 2(???每次都有不同数量的元素):

0 0xa173a8

...

12 0xa17548

//没有 vector 大小,我假设函数有返回值;因为某事

我用 QVector 和 std::vector 都试过了,它们是一样的。如果有人有任何想法,可能是什么问题,请告诉我!

谢谢,抱歉我的英语不好!

编辑

我所有的代码都在这里:

字段.h:http://paste2.org/p/1937231

字段.cpp:http://paste2.org/p/1937232

播放器.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

最佳答案

谢谢大家的帮助,我找到了解决方案。

因为我正在制作一个窗口应用程序的逻辑部分,所以我开始了一个 QT gui 项目。它为我生成了一个 main() 函数:

QApplication a(argc, argv);
MainWindow w;
w.show();
return a.exec();

我不知道这是什么,但因为我现在不需要任何窗口,所以我删除了代码,并用我的代码替换了它,然后简单地返回 0;在最后。这一定是导致问题的原因,因为当我再次将 QApplication 添加到代码中时:

QApplication a(argc, argv);
Board b(10);
return a.exec();

它就像一个魅力...

我不知道在这种情况下该怎么做,如果可以的话,我会把重点告诉所有试图提供帮助的人。但无论如何,非常感谢您的帮助! :)

关于c++ - vector push_back 随机发生,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9665309/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com