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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.70
Kgfq
74 / 37 / 2
Регистрация: 23.09.2012
Сообщений: 408
06.10.2012, 10:18     Сокрытие методов при наследовании #1
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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.10.2012, 10:18     Сокрытие методов при наследовании
Посмотрите здесь:

C++ Ошибка при наследовании
C++ Ошибка при наследовании
C++ Ошибка при наследовании
Конструкторы при наследовании C++
С++ течет при наследовании C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Mиxaил
 Аватар для Mиxaил
530 / 435 / 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
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 7
06.10.2012, 10:59     Сокрытие методов при наследовании #4
если только явно вызвать
b.A :: Draw(10.5);
MrCold
851 / 749 / 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++
 Аватар для Deviaphan
1283 / 1217 / 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
 Аватар для igorrr37
1593 / 1221 / 118
Регистрация: 21.12.2010
Сообщений: 1,868
Записей в блоге: 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++ Присвоение при наследовании

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

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

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