Loading...
Jovanna avatar Jovanna 186 Точки

C++ Advanced Task07_05 - List - как се копират int-овете в случая от задачата (copy-assignment оператор= и при добавяне на елемент на края)

Здравейте,

как се копират int-овете в случая от задачата (с copy-assignment оператор=  или при добавяне на елемент на края), въобще не ми е ясен синтаксиса.

Не разбирам като се създават новите връзки, как точно да го разпиша с под-класа? Съчиних това, но не знам до колко е правилно:

List& List::operator=(const List& other) {    
    //1.DeleteAll: (същия код като на деструктора)
    Node * temp = this->head;
    Node  * prevPtr = nullptr;
    while (temp->getNext() != nullptr) {
        prevPtr = temp;
        temp = this->head->getNext();
        delete prevPtr;
        prevPtr = nullptr;
    }
    delete temp;
    temp = nullptr;
    this->head = nullptr;
    this->tail = nullptr;
    this->size = 0;

    //2.Copy
    Node * currPtr = other.head;  //set to first link
    while (currPtr != nullptr) {
        currPtr = currPtr->getNext; // move to next link
    }
    this->head = currPtr;
    return *this;
}

Поздрави!

Тагове:
0
C++ Programming 23/10/2018 22:05:33
MartinBG avatar MartinBG 4635 Точки

Може да използваш removeAll() за първата част.

За втората - правилно обхождаш елементите на other, но не им създаваш копия, които да добавяш в this (това трябва да се случи във while цикъла, например чрез add(int) ), но по-добър вариант е да използваш addAll(const List& other).

Не забравяй да провериш, че (this != &other) преди да правиш каквото и да е в copy-assignment-a ;)

0
24/10/2018 00:07:46
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.