BWAPI を使用して、現在のゲームの Unit オブジェクトにアクセスするときにアクセス違反エラーが発生する人はいますか?
エラーが私のコードにないことは確かです..とにかく..アクセス違反を避けるためにできることはありますか?
以下のコメントに沿って、このエラーが発生することがあります..このコードは何度も実行され、エラーが発生するのは時々だけです..
int Squad::getSize() {
int no = 0;
for (int i = 0; i < (int) agents.size(); i++) {
BaseAgent* agent = agents.at(i);
if (agent != NULL && agent->isAlive() && agent->getUnit() != NULL && !agent->getUnit()->isBeingConstructed()) // this line
no++;
}
return no;
}
これは、ベクターから BaseAgent を削除するために使用するコードです。それを分析して、もっとうまくできるかどうかを確認してください。
void AgentManager::cleanup() {
//Step 2. Do the cleanup.
int cnt = 0;
int oldSize = (int)agents.size();
for (int i = 0; i < (int)agents.size(); i++) {
if (!agents.at(i)->isAlive()) {
delete agents.at(i);
agents.erase(agents.begin() + i);
cnt++;
i--;
}
}
int newSize = (int)agents.size();
}
BaseAgent コードはこのリンクにあります