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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
#1

Сокрытие методов при наследовании - C++

06.10.2012, 10:18. Просмотров 1331. Ответов 8
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class A {
public:
void Draw(double){}
};
 
class B : public A {
public:
void Draw(int){}
};
 
int main(){
B b;
b.Draw(10.5);
returb 0;
}
Выдает ошибкупри вызове функции. после наследования не видит "Draw(double)". почему?

компилятор msvs2012
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
531 / 436 / 37
Регистрация: 10.12.2009
Сообщений: 1,857
06.10.2012, 10:29     Сокрытие методов при наследовании #2
Цитата Сообщение от Kgfq Посмотреть сообщение
returb 0;
C++
1
return 0;
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
06.10.2012, 10:44  [ТС]     Сокрытие методов при наследовании #3
ошибка именно в том, что не видит функцию.
с rerurb - опечатка, в коде ее нету
igorrr37
1637 / 1265 / 130
Регистрация: 21.12.2010
Сообщений: 1,927
Записей в блоге: 7
06.10.2012, 10:59     Сокрытие методов при наследовании #4
если только явно вызвать
b.A :: Draw(10.5);
MrCold
852 / 750 / 71
Регистрация: 11.01.2012
Сообщений: 1,942
06.10.2012, 10:59     Сокрытие методов при наследовании #5
http://liveworkspace.org/code/199474...1caa0b36688a33
Все видит .
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
06.10.2012, 11:23  [ТС]     Сокрытие методов при наследовании #6
MrCold,
igorrr37, явно - да, но мне нужно неявно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
06.10.2012, 11:28     Сокрытие методов при наследовании #7
Определение в дочернем классе перекрыло определение из базового. Нужно сделать метод базового класса видимым в дочернем:
C++
1
2
3
4
5
class B...
{
...
using void Draw(double);
};
igorrr37
1637 / 1265 / 130
Регистрация: 21.12.2010
Сообщений: 1,927
Записей в блоге: 7
06.10.2012, 11:35     Сокрытие методов при наследовании #8
или так
C++
1
2
3
4
5
6
7
8
class B : public A {
public:
    using A::Draw;
    void Draw(int)
    {
        std::cout << "B::Draw" << std::endl;
    }
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2012, 12:52     Сокрытие методов при наследовании
Еще ссылки по теме:

Деструктор при наследовании C++
C++ Присвоение при наследовании
Ошибка при наследовании C++
C++ Реализация двух виртуальных методов с одинаковыми именами при множественном наследовании
Ошибка при наследовании C++

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

Или воспользуйтесь поиском по форуму:
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
07.10.2012, 12:52  [ТС]     Сокрытие методов при наследовании #9
Deviaphan, ваш способ не работает
Yandex
Объявления
07.10.2012, 12:52     Сокрытие методов при наследовании
Ответ Создать тему
Опции темы

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