【发布时间】:2017-03-25 19:02:24
【问题描述】:
这是类定义:
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。
标签: c++ arrays member-functions