stasnewar
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору Здравствуйте. У меня есть вопрос к умным людям, смыслящим в программировании. язык С++. есть класс, имеющий как автоматические объекты, так и динамические. и стоит задача написать операторы для данного класса. такие операторы как +=, -=, =, << написал без каких-либо трудностей, но вот когда начал писать операторы - и +, то столкнулся с проблемой... вот код Kuter & Kuter::operator +(Kuter &ob) { Kuter czasowy; czasowy.paliwo = paliwo + ob.paliwo; czasowy.ludzie = ludzie + ob.ludzie; czasowy.ryby->ilosc_ryby = ryby->ilosc_ryby + ob.ryby->ilosc_ryby; czasowy.sieci->ilosc_sieci = sieci->ilosc_sieci + ob.sieci->ilosc_sieci; return czasowy; } как видно создаю временный объект "czasowy" и выполняю действия. а забыл сказать, что это метод класса Kuter, указатель this не писал ибо и так понятно... так вот, проблема в чем, допустим в функции main() пишу k = k1 + k2; где k,k1,k2 объекты класса Kuter, компилятор молчит, все успешно, запускаю программу и вылетает ошибка, что при присваивании программа не знает, что присваивать. ну я конечно не тупой понимаю, что этот временный объект "czasowy" удаляется при завершении метода, то есть срабатывает деструктор. вспомнил, что мне в университете говорили насчет указателя &, что он указывает соответственно на адрес и что при срабатывании деструктора временный объект удаляется из памяти и программа не знает куда ссылаться, а если писать без этого указателя, то программа использует копию этого объекта, неважно удален он или нет. ну я и удалил данный указатель, то есть получилось так Kuter Kuter::operator +(Kuter &ob) { Kuter czasowy; czasowy.paliwo = paliwo + ob.paliwo; czasowy.ludzie = ludzie + ob.ludzie; czasowy.ryby->ilosc_ryby = ryby->ilosc_ryby + ob.ryby->ilosc_ryby; czasowy.sieci->ilosc_sieci = sieci->ilosc_sieci + ob.sieci->ilosc_sieci; return czasowy; } но все ровно программа кричит, что ссылаюсь в некуда... в чем причина??? |