Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- //суть задания такова: необходимо перегрузить оператор присваивания, и конструктор копирования так,
- //чтобы можно было копировать односвязные списки
- class link
- {
- private:
- int data;
- public:
- link * next;
- void getData(int d) { data = d; }
- int returnData() {
- std::cout << "Hi, i will return " << data << std::endl;
- //при компиляции ошибка доступа к элементу
- //Exception thrown : read access violation.
- // this was 0xCCCCCCCC.
- return data;
- }
- };
- class list
- {
- private:
- link* first;
- public:
- list() :first(NULL) {}
- list(list& dd1)
- {
- link* current = dd1.first;
- while (current->next != NULL)
- {
- add_to_list(current->returnData());
- current = current->next;
- }
- }
- ~list() {
- link* current = first;
- while (current != NULL)
- {
- link*temp = current;
- std::cout << "Droping value " << temp->returnData() << std::endl;
- current = current->next;
- delete temp;
- }
- }
- void add_to_list(int d) {
- link* newlink = new link;
- newlink->getData(d);
- newlink->next = first;
- first = newlink;
- }
- void show_list()
- {
- link* current = first;
- while (current)
- {
- std::cout << "==done==";
- std::cout << current->returnData() << std::endl;
- current = current->next;
- }
- }
- list operator = (list& dd1)
- {
- // собственно сама перезагрузка оператора
- link* current = dd1.first; // я создаю переменную от которой будет вестись счет, назначаю первый элемент того, что хочу присвоить
- while (current->next != NULL)
- {
- //пока следующий элемент не будет равен концу списка, я заполняю свой список
- add_to_list(current->returnData());
- current = current->next; //переход на следующий элемент
- }
- return *this;
- }
- //как я понимаю, ошибка из-за того, что я пытаюсь вернуть returnData() незарегестрированный участок
- //памяти тобишь мусор
- };
- int main()
- {
- list list1, list2;
- list1.add_to_list(22);
- list1.add_to_list(23);
- list1.add_to_list(24);
- list1.add_to_list(25);
- list1.add_to_list(26);
- std::cout << "list1\n";
- list1.show_list();
- list2 = list1;
- std::cout << "list2\n";
- list2.show_list();
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement