Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 23.03.2015
Сообщений: 55
1

Найти ошибки в коде и исправить эти ошибки (Наследование)

03.10.2016, 18:44. Просмотров 1367. Ответов 3
Метки нет (Все метки)

Вот в общем 3 файла, изучаю наследование на примере односвязного и двусвязного списков:
list.h (inline)
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once
class list
{
protected:
    int myValue;
    list *myNext;
public:
    list(int Value)
    {
        myValue = Value;
        myNext = 0;
    }
    ~list()
    {
        if (myNext != 0)
            delete myNext;
    }
    void addValue(int Value){
        list *current = this;
        while (current->myNext != 0){
            current = current->myNext;
        }
        current->myNext = new list(Value);
    }
    int length(){
        int counter = 0;
        for (list *current = this; current != 0; current = current->myNext)
            counter++;
        return counter;
    }
};


DoubleList.h
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
#pragma once
#include "list.h"
class DoubleList : public list
{
protected:
    DoubleList *myPrevious;
public:
    DoubleList(int Value, DoubleList *Previous);
    ~DoubleList();
    void addValue(int Value);
};


DoubleList.cpp
Кликните здесь для просмотра всего текста

C++
1
 
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.10.2016, 18:44
Ответы с готовыми решениями:

Найти причины возникновения ошибок в коде и исправить эти ошибки (наследование)
Помогите понять в чем ошибки. header.h: #include <iostream> #include <string> using namespace...

Найти ошибки в коде и исправить эти ошибки - C++
Судя по вываливающейся ошибки, идет двойное освобождение памяти. У самого не получается отловить...

Найти ошибки в коде и исправить эти ошибки
Есть у меня вот такой код: #include <iostream> using namespace std; class A{ private:...

Найти причины возникновения ошибок в коде и исправить эти ошибки
Делаю лабу по программированию, всё бы хорошо но проблема с одной строчкой #include "stdafx.h"...

3
6914 / 5979 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
03.10.2016, 18:46 2
Ты не путаешь список и элемент списка? Или так задумано?
0
2 / 2 / 0
Регистрация: 23.03.2015
Сообщений: 55
03.10.2016, 19:09  [ТС] 3
блин, отредактировать нельзя первый пост...
допишу тут:

основная суть проблемы тут
DoubleList.cpp
Кликните здесь для просмотра всего текста

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include "DoubleList.h"
 
DoubleList::DoubleList(int Value, DoubleList *Previous = 0) : list(Value)
{
    myPrevious = Previous;
}
 
 
DoubleList::~DoubleList()
{
}
 
void DoubleList::addValue(int Value)
{
    DoubleList *current = this;
    while (current->myNext != 0)
        //Никуя непонятно (в оригинале "current = current->myNext;") но компилятор принимает только написанное ниже 
        (list)*current = *current->myNext; //Правильно ли я методом тыка тут сделал приведение ссылки, не возникнет ли проблем позднее?
        //Из-за исправлений выше пришлось выкручиватся с конструктором класса 
        current->myNext = new DoubleList(Value, current);     //В оригинале тут конструктор с одним параметром а после идет строчка  "current->myNext->myPrevious = current"   
}


Все ли я зделал правильно, если нет, то как нужно правильно?
С меня огромное спасибо и + в карму...

Добавлено через 14 минут
Цитата Сообщение от nmcf Посмотреть сообщение
Ты не путаешь список и элемент списка? Или так задумано?
К общей реализации классов просьба не придираться, они упрощенные до абсолюта, пытаюсь разобраться в сути наследования на примере данных классов.
0
6914 / 5979 / 2709
Регистрация: 14.04.2014
Сообщений: 25,504
03.10.2016, 19:58 4
Цитата Сообщение от Chronid Посмотреть сообщение
пытаюсь разобраться в сути наследования на примере данных классов
Ну вот суть наследования ты и не понял. Второй класс просто дублирует первый, для чего это?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.10.2016, 19:58

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти причины возникновения ошибок в коде и исправить эти ошибки
Уважаемые форумчане, тут вот изучал дружественные методы, классы и функции и наткнулся вот на токую...

Найти причины возникновения ошибок в коде и исправить эти ошибки
#include <iostream> #include <Windows.h> #include <iterator> #include <algorithm> #include...

Найти причины возникновения ошибок в коде и исправить эти ошибки
void cvedenmagaz(string cveden, tovar* tov, basa univermag, basa product){ string magas; ...

Найти причины возникновения ошибок в коде и исправить эти ошибки
Уважаемые пользователи просьба помочь с одной проблемой,смысл в том что при создании записи она...

Найти причины возникновения ошибок в коде и исправить эти ошибки
Совсем я запуталась. Опять куча ошибок. Помогите разобраться, пжлст. П.5.18.Правил Запрещено...

Найти причины возникновения ошибок в коде и исправить эти ошибки
Всем привет, я новичок. Решил попробовать создать простенький класс который выводит данные которые...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.