Форум программистов, компьютерный форум CyberForum.ru

Ошибка при наследовании класса - C++

Восстановить пароль Регистрация
 
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 437
07.10.2013, 09:04     Ошибка при наследовании класса #1
Всем доброго времени суток, пытаюсь отнаследовать класс, вот такой код я смастерил:
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
32
33
#ifndef CLASS_H_
#define CLASS_H_
 
class stack
{
protected:
    int *turn;
    int count, size;
public:
 
    void pop(int var);
    int push();
    void ShowSize();
    stack(int inSize)
    {
        turn = new int[inSize];
        size = inSize;
        count = -1;
    }
};
 
class fifo: public stack
{
public:
    fifo(int inSize)
    {
        turn = new int[inSize];
        size = inSize;
        count = -1;
    };
    int push();
    void ShowTurn();
};
Eclipse подствечивает следующие ошибки:
строка "class stack" - candidate expects 1 argument, 0 provided;
строка "stack(int inSize)" - stack(int inSize);
и строка где фигурная скобка, сразу после "stack(int inSize)" - ошибка: нет подходящей функции для вызова
«stack::stack()»
- замечание: candidates are:

Подскажите пожалуйста, что не правильно я сделал, уже битый час не могу понять. До того, как отнаследовал класс fifo всё было нормально, сейчас вот такие ошибки полезли. Заранее спасибо.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
07.10.2013, 09:56     Ошибка при наследовании класса #2
C++
1
2
3
fifo(int inSize) : stack ( inSize ){
 
}
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 437
07.10.2013, 10:02  [ТС]     Ошибка при наследовании класса #3
спасибо большое. а не могли бы объяснить почему именно такая форма записи?
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11845 / 6824 / 771
Регистрация: 27.09.2012
Сообщений: 16,920
Записей в блоге: 2
Завершенные тесты: 1
07.10.2013, 10:08     Ошибка при наследовании класса #4
При
C++
1
2
3
fifo(int inSize){
 
};
будет вызван конструктор базового класса без аргументов. Такого конструктора в классе stack нет, отсюда и ошибка
ошибка: нет подходящей функции для вызова
«stack::stack()»
При
C++
1
2
3
fifo(int inSize) : stack ( inSize ){
 
}
Мы явно указали в списке инициализации какой конструткор базового класса вызывать.
Во "внутренностях" конструктора fifo
C++
1
2
3
        turn = new int[inSize];
        size = inSize;
        count = -1;
нет необходимости, т.к. конструктор базового класса делает всё тоже самое.
dalay_lama
 Аватар для dalay_lama
65 / 65 / 7
Регистрация: 22.09.2012
Сообщений: 437
07.10.2013, 10:14  [ТС]     Ошибка при наследовании класса #5
Большое спасибо. Теперь многое стало на свои места)
Yandex
Объявления
07.10.2013, 10:14     Ошибка при наследовании класса
Ответ Создать тему
Опции темы

Текущее время: 09:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru