подскажите. какой смысл создавать конструктор копий, если я перегружаю знак =, вот у меня без него все работает на ура, а если я к перегруженному = делаю еще конструктор копий то вылетаю с ошибкой сегментирования, список есть очередь, обычны двусвязный не циклический, перегружа. = так
queue &queue::operator =(const queue &obj)
{
ListEl *p=this->head;
ListEl *p1=obj.head;
for(int i=0;i<obj.n;i++)
{
if(i<this->n)
{
p->num=p1->num;
}
else
{
this->Add(p1->num);
}
p=p->next;
p1=p1->next;
}
return *this;
}
т.е. вот с этим все работает, а вот если добавить к нему конструктор копий , такой
queue::queue(const queue &obj)
{
ListEl *p=this->head;
ListEl *p1=obj.head;
if(p!=NULL)
{
for(int i=0;i<obj.n;i++)
{
if(i<this->n)
{
p->num=p1->num;
}
else
{
this->Add(p1->num);
}
p=p->next;
p1=p1->next;
}
}
else
{
for(int i=0;i<obj.n;i++)
{
this->Add(p->num);
p=p->next;
p1=p1->next;
}
}
}
то ничерта не работает, функция ADD добавляет элемент в список
Примечание:
в функции add она автоматом увеличивается
Примечание:
если его даже оставлять пустым, этот конструктор. то тоже вылетает ошибка сегментирования
Примечание:
уже нашел, но ошибку это не исправиль
Примечание:
там не будет мусора, ибо есть список. а если есть список то есть и колличество элементов
Примечание:
ttp://paste.org/pastebin/api/24995
Примечание:
это я все поправил, посмотри текущий код на пасте, там немного по другому, идет проверка есть ли список, если он есть то мы не инициализируем head а если его нет то мы туда загоняем нулл и начинаем добавлять элементы
Примечание:
this->head=NULL;
this->n=0;
this->tail=NULL;
this->ptrLast=NULL;
ListEl *p=this->head;
ListEl *p1=obj.head;
for(int i=0;i<obj.n;i++)
{
this->Add(p->num);
p=p->next;
p1=p1->next;
}
сделал так, по прежнему эррор
Примечание:
все, всем спасибо, понял, сделал
RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.
Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.
Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.