SDLを使用してRTSゲームに取り組んでいます。オブジェクトが近くの木から木材を収集するウッドヤード クラスがあります。このクラスでは、temp_trees というベクトルを作成し、コンストラクターの引数として、渡すツリー オブジェクトのベクトルを使用します。
ウッドヤード コンストラクター:
woodyard::woodyard(int x, int y, int HP, int id, vector<Tree> trees)
{
...
vector<Tree> temp_trees;
for(int i = 0; i < trees.size(); i++)
{
if((trees[i].xPos - 100) / 50 >= x - 5 && (trees[i].xPos - 100) / 50 <= x + 4)
{
if((trees[i].yPos - 100) / 50 >= y - 5 && (trees[i].yPos - 100) / 50 <= y + 4)
{
temp_trees.push_back(trees[i]);
}
}
}
collect_control = 0;
no = 0;
}
collect_wood 関数:
void woodyard::collect_wood(){
if(no == 5)
{
temp_trees[collect_control].drewno -= 1;
if(temp_trees[collect_control].drewno <= 0){
collect_control++;
temp_trees.erase(temp_trees.begin());
}}
no++;
if(no >= 10){
no = 0;
}}
起動直後にプログラムがクラッシュします。このコードにエラーが表示されることはありますか??
PS: コンストラクターで要素をあるベクターから別のベクターにコピーすると、何か問題が発生する可能性があると思います。