2014-12-30 52 views
0

我創建了我的類「動態」(未顯示)的新對象,它繼承自「有機」,繼承自「正在」諸如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_); 
} 
+1

輸出值以十六進制,它是一個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

+0

也許有人在呼籲'有機::有機()'?由於這部分代碼不包含在內,所以很難猜測,但事情在那裏可能會出錯。 – kratenko

+1

看到您的實際班級定義會很有趣。在'age_dur_'附近的任何地方都有'max_spawn_'?如果它是一個int [5]',你會超出'age_dur_'。 (你的循環應該有'i <5'作爲它的條件,而不是'i <= 5')。 –

回答

2

age_dur(和推測是age_dur_)是int [5]陣列。複製這樣的:

for (int i = 0; i <= 5; i++) 
     age_dur_[i] = age_dur[i]; 

將覆蓋東西附近age_dur_東西。如果max_spawn_age_dur_相鄰,則可能被垃圾覆蓋。

更改環路:

for (int i = 0; i < 5; i++) 
    age_dur_[i] = age_dur[i]; 
相關問題