【发布时间】:2010-09-07 03:39:09
【问题描述】:
我有一个函数可以在向量中创建和插入一些数字。
if(Enemy2.dEnemy==true)
{
pt.y=4;
pt.x=90;
pt2.y=4;
pt2.x=125;
for(int i=0; i<6; i++)
{
Enemy2.vS1Enemy.push_back(pt);
Enemy2.vS2Enemy.push_back(pt2);
y-=70;
pt.y=y;
pt2.y=y;
}
Enemy2.dEnemy=false;
Enemy3.cEnemy=0;
}
它应该在两个向量中插入 6 个数字,唯一的问题是它没有 - 它实际上插入了 更多。
我认为除非Enemy2.dEnemy == true,否则 sn-p 不会运行,而且它不会永远保持不变。
第一次运行 sn-p 时,Enemy2.dEnemy 被设置为 false,它不应该再次运行。
除了创建窗口时,我不会在任何地方将Enemy2.dEnemy 设置为true。
如果我在 sn-p 中的任何位置插入断点,程序将正常工作 - 它只会在两个向量中插入 6 个数字。
有什么想法吗?
好的,所以我做了一些调试。
我发现
Enemy2.dEnemy=false; 由于某种原因被跳过了。我试着这样做看看是不是。
if(Enemy2.dEnemy)
{
pt.y=4;
pt.x=90;
pt2.y=4;
pt2.x=125;
for(int i=0; i<6; i++)
{
Enemy2.vS1Enemy.push_back(pt);
Enemy2.vS2Enemy.push_back(pt2);
y-=70;
pt.y=y;
pt2.y=y;
}
TCHAR s[244];
Enemy2.dEnemy=false;
if(Enemy2.dEnemy)
{
MessageBox(hWnd, _T("0"), _T(""), MB_OK);
}
else
{
MessageBox(hWnd, _T("1"), _T(""), MB_OK);
}
Enemy3.cEnemy=0;
}
消息框弹出说 1,我的代码运行良好。看来Enemy2.dEnemy=false; 没时间跑了;/
哇哇哇哇哇哇哇哇哇哇哇哇哇!
好的,我发现导致插入超过 6 个数字的真正问题在哪里..
这是我分配Enemy2.dEnemy=true;的地方
if(Enemy2.e1)
{
Enemy2.now=time(NULL);
Enemy2.tEnemy=Enemy2.now+4;
Enemy2.e1=false;
}
if(Enemy2.tEnemy==time(NULL))
{
check=1;
Enemy2.aEnemy=0;
Enemy2.dEnemy=true;
}
问题似乎是第二个 if 运行了不止一次,这很奇怪!
【问题讨论】:
-
请澄清:代码有什么问题?
-
是C++还是C++代码有问题?
-
你在使用多线程吗?
-
这里没有足够的上下文来解释发生了什么 - 每当该代码运行时,它都会将六个点准确地推入每个向量中。大概你的问题在它之外的某个地方。
-
这可能是使用久经考验的“std::cout”调试方法的时候了 :) 每次 push_back 发生时打印一些东西。有12个打印输出吗?如果是这样……很奇怪。如果不是……那就多投点球吧!请谨慎行事,并确保您的代码不会因为额外的控制台输出而开始表现不同:)
标签: c++ visual-c++ winapi vector