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

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

03.10.2016, 18:44. Просмотров 364. Ответов 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
 

http://www.cyberforum.ru/cpp-beginners/thread1860205.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.10.2016, 18:44
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Найти ошибки в коде и исправить эти ошибки (Наследование) (C++):

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

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

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

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

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

3
nmcf
6238 / 5550 / 2525
Регистрация: 14.04.2014
Сообщений: 23,338
03.10.2016, 18:46 #2
Ты не путаешь список и элемент списка? Или так задумано?
0
Chronid
2 / 2 / 1
Регистрация: 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
nmcf
6238 / 5550 / 2525
Регистрация: 14.04.2014
Сообщений: 23,338
03.10.2016, 19:58 #4
Цитата Сообщение от Chronid Посмотреть сообщение
пытаюсь разобраться в сути наследования на примере данных классов
Ну вот суть наследования ты и не понял. Второй класс просто дублирует первый, для чего это?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.10.2016, 19:58
Привет! Вот еще темы с решениями:

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

Найти причины возникновения ошибок в коде и исправить эти ошибки
Всем хай. Во-первых, vs не видит в мейне V и говорит, что она не...

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

Найти причины возникновения ошибок в коде и исправить эти ошибки
не пойму что он от меня хочет #include <math.h> #include <stdio.h>...


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

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

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