所以说我有
Class Person{
private:
Person* _friends[10];
public:
//All methods listed below. Except for the main one, that is.
}
Person::Person()
{
for(int i=0; i < 10; i++)
_friends[10] = 0;
}
Person* Person::getFriends()
{
return _friends;
}
void Person::addFriend(Person* buddy) //Assume it's fully functional.
{
//code for adding a friend.
}
void Person::operator=(Person& p)
{
for(int i = 0; i < 10; i++)
_friends[i] = p.getFriends()[i];
}
int main()
{
int user1size = 10;
int user2size = 30;
Person* user1 = new Person[10];
Person* user2 = new Person[10];
//assume these 4 next lines will be repeated with different values a few more times, in more intricate ways, by the magic of for/while loops.
user1[0] = new Person();
user2[9] = new Person();
user1[0].addFriend(user[9]);
user1[9].addFriend(user[0]);
for(int i = 0; i < user1size; i++)
{
user2[i] = user1[i]; //Here is where the paradox starts.
}
delete [] user1;
return 0;
}
那么好吧,我的问题是它在哪里停止?我的意思是,我的意图是只复制对 _friends 数组中的 Person 对象的引用,但我知道这可能几乎不可能,所以解决方案也是继续“复制”这些 Person 对象,而这些对象也有朋友列表,这些朋友也有朋友等等。我知道它必须在某个地方停止,但我真的不希望它一直通过,更不用说我不希望某些 Person 对象被过度复制或陷入无限循环。那么如何解决这个悖论呢?
PS:如果我的代码有很多错误或者很糟糕,请理解。我在旅途中做到了,我打算用它来让你们都了解总体思路。
PS2:我不能使用除 之外的任何其他库<ostream>
,是的,这对我来说很糟糕。
PS3:任何你可以提供给我阅读的网站/文章都会让我很高兴!事先谢谢你。