我創建了我的類「動態」(未顯示)的新對象,它繼承自「有機」,繼承自「正在」諸如id,biomeRow等的參數。爲變量賦值後得到垃圾值,看不出爲什麼
Organic有:features_(結構),max_spawn_,total_spawn_,age_dur_(數組)和current_age_。
問題:創建動態對象時,除max_spawn_外,所有值均設置正確。在創建Dynamic之前,我已經完成了我的printfs,創建了Dynamic和爲輸入值創建了Organic,並且它們都是正確的。
功能struct是正確的,total_spawn_是正確的,age_dur_數組和current_age_都是正確的。
所有這些都是我問的,除了max_spawn_。 maxSpawn是我傳遞的值(20),max_spawn_應該是20,但事實並非如此。我所有的printf和調試控制檯都顯示它大約是-858993460。我猜這只是垃圾,但我不知道這怎麼可能當所有我做的是:
max_spawn_ = maxSpawn;
所以,這是我的函數:
Organic::Organic(int id, int biomeRow, int biomeColumn, int biomeType, int beingType,
int object, Features features, int maxSpawn, int totalSpawn,
int age_dur[5], int current_age)
: Being(id, biomeRow, biomeColumn, biomeType, beingType, object)
{
features_ = features;
max_spawn_ = maxSpawn;
total_spawn_ = totalSpawn;
age_ = current_age;
for (int i = 0; i <= 5; i++)
age_dur_[i] = age_dur[i];
printf("\n%d\n", max_spawn_);
}
輸出值以十六進制,它是一個http://en.wikipedia.org/wiki/Magic_number_%28programming%29?無論如何,你有一個非常不好的命名你的成員和參數的風格。也相關:http://stackoverflow.com/help/mcve,也可以:http://ericlippert.com/2014/03/05/how-to-debug-small-programs/ – Samuel
也許有人在呼籲'有機::有機()'?由於這部分代碼不包含在內,所以很難猜測,但事情在那裏可能會出錯。 – kratenko
看到您的實際班級定義會很有趣。在'age_dur_'附近的任何地方都有'max_spawn_'?如果它是一個int [5]',你會超出'age_dur_'。 (你的循環應該有'i <5'作爲它的條件,而不是'i <= 5')。 –