C++ 无法从错误进行调试,但代码中没有错误
C++ Cannot debug from errors, but no errors in code
我正在尝试"删除"/杀死我的实体,如果它们超出"游戏区"或至少用户可见的内容。我没有收到任何错误,但是当我在函数"killEdgeEntities"中尝试此代码示例并启动游戏时,一切都已经死了,就好像"if 语句"直接执行一样。不,我没有在争论之外产生任何东西。例如,用户 Ship 在屏幕中间生成。
如果你们需要更多信息,请发表评论。
void Invaders::killEdgeEntities() {
EntityVector entities;
for (EntityVector::iterator j = mEntities.begin(); j != mEntities.end(); j++) {
Entity *entity = *j;
// * Dödsgränser *
// Vänster:
if (entity->getPosition().getX() < -20) {
delete entity;
}
// Höger:
if (entity->getPosition().getX() > VGCDisplay::getWidth() + 20) {
delete entity;
}
// Upp:
if (entity->getPosition().getY() < -80) {
delete entity;
}
// Ner:
if (entity->getPosition().getY() > VGCDisplay::getHeight() + 20) {
delete entity;
}
}
mEntities = entities;
}
不是真正的答案 - 因为您没有发布足够的代码让我们弄清楚发生了什么......但是您已经发布了足够多的内容来查看问题。
if (entity->getPosition().getX() < -20) {
delete entity;
}
// Höger:
if (entity->getPosition().getX() > VGCDisplay::getWidth() + 20) {
当您的 x <-20 并删除实体时会发生什么? 您尝试在下一行访问它,该行现在是一个浮动指针(即它不指向有效内存)......以及等待发生的崩溃。
这解决了我的问题,通过在最后对实体进行push_back到实体矢量"实体"的 else 批处理。最后在 for 循环之后确保它们是内联的(我猜是并行的)。
void Invaders::killEdgeEntities() {
EntityVector entities;
for (EntityVector::iterator i = mEntities.begin(); i != mEntities.end(); i++) {
Entity *entity = *i;
// * Dödsgränser *
// Vänster:
if (entity->getPosition().getX() < -20) {
delete entity;
}
// Höger:
else if (entity->getPosition().getX() > VGCDisplay::getWidth() + 20) {
delete entity;
}
// Upp:
else if (entity->getPosition().getY() < -80) {
delete entity;
}
// Ner:
else if (entity->getPosition().getY() > VGCDisplay::getHeight() + 20) {
delete entity;
}
else {
entities.push_back(entity);
}
}
mEntities = entities;
}
相关文章:
- 我的字符计数代码计算错误.为什么
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 如何修复sfml c++代码编译错误
- 需要以下代码的帮助,下面的代码有什么问题
- 我的代码中有错误,未声明的标识符
- 我关于函数"Assert"的C++代码有问题
- 为什么这两段使用 constexpr、__PRETTY_FUNCTION__ 和 char * 的代码有不同的结果?
- C++ LeetCode #377 的 DP 解决方案中,此代码是否有错误?
- 我如何在一个 if 语句中声明所有数字我尝试通过其他方式声明所有数字,如果一个接一个,但似乎代码有逻辑错误
- 我在这个 C++ 代码上有错误吗?
- 我在 c++ 中的 AES 代码有问题。明文正在更改,但加密邮件是相同的。我找不到我的错误
- 是视觉C++优化器错误还是我的代码中有错误?
- 我的 MergeSort 显示错误的输出,您认为我的代码有什么问题
- 这个C++代码有什么问题?编译错误:调用“测试::测试(测试)”没有匹配函数
- 我的链表代码有错误,有人能帮我检查哪里错了吗
- 下面的代码有哪些错误?
- 为什么此代码有 C2784 "could not deduce template argument"错误
- 是否有任何内置的CUDA函数允许CUDA内核向主机代码报告错误?
- 我的代码有问题,因为我无法弄清楚为什么会收到错误。这是代码:
- Cocos2d-X的testcpp代码是否有错误?