下面是類認定中:通行證對象數組成員函數
class Unit
{
public:
Unit();
~Unit();
void set_unit(int a);
void modify_flag(Unit&);
void modify_array(Unit array[], int len); // ?? The problem
int show_unit();
private:
int ai;
};
和成員函數的實現:
void Unit::set_unit(int a)
{
ai = a;
}
void Unit::modify_flag(Unit& u)
{
u.set_unit(20);
}
void Unit::modify_array(Unit array[], int len) // ?? The problem
{
for (int i = 0; i < len; ++i)
{
modify_flag(array[i]);
array[i].modify_array(array, len);
}
}
int Unit::show_unit()
{
return ai;
}
最後主代碼:
int main(int argc, char const *argv[])
{
int len = 10;
Unit* array = new Unit[len];
for (int i = 0; i < len; ++i)
{
array[i].set_unit(0);
}
array[5].modify_array(array,len); // ?? The problem
for (int i = 0; i < len; ++i)
{
cout << array[i].show_unit() << endl;
}
delete [] array;
return 0;
}
我將一個對象數組作爲參數傳入類的成員函數,但它突然中止。我已經多次檢查過我的代碼,以確保計數器不會累積超過數組長度。因此,我認爲對象數組作爲參數必定有問題,但我無法弄清楚。我的代碼發生了什麼?
您似乎有無限遞歸,因爲'modify_array'調用'modify_array'。 – aschepler