그래서 내가 잘 오버로드는 = 연산자 역설
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 객체가 복사되지 않거나 무한 루프에 빠지기를 바라지 않는다. 어떻게이 역설을 해결할 수 있습니까?
P. : 제 코드에 많은 실수가 있거나 엉터리라고 이해해주십시오. 나는 그것을 이동 중에 만들었고 내가 의도 한 것은 당신 모두가 일반적인 아이디어를 잡는 것입니다.
P.S.2 : <ostream>
이외의 라이브러리를 사용할 수 없으므로 나를 괴롭 힙니다.
P.S.3 :이 웹 사이트에서 기사를 읽으면서 제공 할 수있는 웹 사이트 나 기사는 저를 매우 행복하게 만들 것입니다. 미리 감사드립니다.
코드를 들여 씁니다. –
잘 들여 쓰여지고 실제로 컴파일 될 코드를 게시하십시오. 나는 대문자 "Class"가 괜찮은지 의심스럽고 addFriend을 private으로 만들었으므로 main()에서 호출 할 수 없습니다. 당신이 그렇게 할 때까지는, 당신의 단락을 읽는 것이 너무 귀찮습니다. –
그래, 내가 고칠거야, 내가 말했듯이, 나는 가야했다. – Yokhen