Re: Прокомментируйте ошибку пожалуйста.
От: _nn_ www.nemerleweb.com
Дата: 30.07.05 07:44
Оценка:
Здравствуйте, Аноним, Вы писали:

А>
А>class Simple
А>{
А>public:
А>    int a;
<skip>
А>    Simple& operator= (const Simple& c)
А>    {
А>        cout << "Operator =\n";
А>        if(this!=&c) *this=c;    // Здесь ошибка
А>        return *this;
А>    }
<skip>
А>



*this=c равносильно this->operator=(c), т.е. получается что из operator= мы вызываем самих себя.
Вот и получается рекурсия без остановки -> переполнение стека и ошибка.

Правильно написать так :
Simple& operator=(const Simple& c)
{
   cout << "operator=\n";
   a = c.a;
   return *this;
}
http://rsdn.nemerleweb.com
http://nemerleweb.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.