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

Проблемы с перегрузкой - C++

Восстановить пароль Регистрация
 
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 199
30.10.2011, 12:46     Проблемы с перегрузкой #1
Доброго времени суток. Собственно у меня следущая проблема. Создаю класс динамических одномерных массивов:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class massiv
{
public:
    massiv();
    massiv(int c);
    bool find(int number,int k);
    ~massiv();
    int getcount(){return count;};
    void output();
protected:
    int* mass;
    int count;
};
в нем есть функция вывода:
C++
1
2
3
4
5
6
void massiv::output()
{
    for(int i=0;i<count;i++)
        cout<<mass[i]<<" ";
    cout<<"\n";
}
потом создаю класс наследник который создает массив вместе с его копией:
C++
1
2
3
4
5
6
7
8
9
10
class copymassiv:public massiv
{
public:
    copymassiv();
    copymassiv(int c);
    ~copymassiv();
    void output(int);
private:
    int* copymass;
};
в котором функция вывода определена следующим образом:
C++
1
2
3
4
5
6
void copymassiv::output(int)
{
    for(int i=0;i<count;i++)
        cout<<copymass[i]<<" ";
    cout<<"\n";
}
я так понимаю эта функция вывода будет перегружена, а функция вывода из предка наследуется, но почему то в функции main когда я делаю следующий вывод :
C++
1
2
backup.output(1);
           backup.output();
компилятор ругается на backup.output(), она же должна наследоваться???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.10.2011, 13:14     Проблемы с перегрузкой #2
Цитата Сообщение от xam max Посмотреть сообщение
void output(int);
и
Цитата Сообщение от xam max Посмотреть сообщение
void output();
это разные функции. Должно быть одинаковым не только название, но и аргументы функции
xam max
3 / 3 / 0
Регистрация: 27.09.2009
Сообщений: 199
30.10.2011, 13:24  [ТС]     Проблемы с перегрузкой #3
Так вот именно что, получается что функция output() должна тогда наследоваться поскольку она не переопределена, а она не наследуется.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
30.10.2011, 13:44     Проблемы с перегрузкой #4
приведи полный код
Net_Wanderer
235 / 208 / 19
Регистрация: 08.06.2011
Сообщений: 467
30.10.2011, 13:59     Проблемы с перегрузкой #5
Попробуйте добавить в класс copymassiv функцию
C++
1
2
3
4
void copymassiv::output()
{
    massiv::output();
}
Добавлено через 4 минуты
Цитата Сообщение от xam max Посмотреть сообщение
я так понимаю эта функция вывода будет перегружена, а функция вывода из предка наследуется, но почему то
Если не изменяет память, функция в производном классе закрывает все перегруженные функции из базового.
Yandex
Объявления
30.10.2011, 13:59     Проблемы с перегрузкой
Ответ Создать тему
Опции темы

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