Название: Перегрузка методов при наследовании класса Отправлено: dr_Begemot от Июль 09, 2009, 15:14 Возник такой вопрос...
Пишу класс: Код: class A{ Код: class B : public A на строке, где if(ok) setVal(d); компилятор пишет cannot convert parameter 1 from 'double' to 'QString' Почему функция setVal в классе B не перегружается а замещается новой версией функции? Как сделать так читобы перегружалась? Название: Re: Перегрузка методов при наследовании класса Отправлено: Авварон от Июль 09, 2009, 15:19 тема уже поднималась, читайте стандарт с++. Укажи явно область видимости
Название: Re: Перегрузка методов при наследовании класса Отправлено: lit-uriy от Июль 09, 2009, 15:21 >>не перегружается а замещается новой версией функции?
А что ты понимашь под перегрузкой в данном случае? Название: Re: Перегрузка методов при наследовании класса Отправлено: dr_Begemot от Июль 09, 2009, 15:25 >>не перегружается а замещается новой версией функции? А что ты понимашь под перегрузкой в данном случае? У класса B будут 2 функции setVal с разными параметрами Название: Re: Перегрузка методов при наследовании класса Отправлено: pastor от Июль 09, 2009, 15:27 на строке, где if(ok) setVal(d); компилятор пишет cannot convert parameter 1 from 'double' to 'QString' Пиши так: Код
Название: Re: Перегрузка методов при наследовании класса Отправлено: lit-uriy от Июль 09, 2009, 15:35 >>У класса B будут 2 функции setVal с разными параметрами
тогда их две и надо описать в классе B. Т.е. в классе A функцию setVal(double) сделать виртуальной, а в классе B создать setVal(QString). Помоему так. Название: Re: Перегрузка методов при наследовании класса Отправлено: Winstrol от Июль 09, 2009, 15:56 Вопрос из топа всевозможных faqов ро C++
В классе B пишешь using A::setVal; Название: Re: Перегрузка методов при наследовании класса Отправлено: f-r-o-s-t от Июль 09, 2009, 16:21 >>У класса B будут 2 функции setVal с разными параметрами тогда их две и надо описать в классе B. Т.е. в классе A функцию setVal(double) сделать виртуальной, а в классе B создать setVal(QString). Помоему так. У виртуальной функции параметры должны быть одинаковые . pastor предложил лучшие решение. Название: Re: Перегрузка методов при наследовании класса Отправлено: lit-uriy от Июль 09, 2009, 16:47 >>У виртуальной функции параметры должны быть одинаковые .
тут я предположил такое поведение (не эксперт к сожалению) Виртуальную setVal(double) мы не описываем в наследнике, т.е. она какбы уза нас описана. И создаём setVal(QString), как перегруженую версию setVal(double) в классе В. тогда, получаем две функции setVal(...) в классе В. Возможно, я не прав. Название: Re: Перегрузка методов при наследовании класса Отправлено: f-r-o-s-t от Июль 09, 2009, 16:51 В том то и дело что виртуальная функция не перегружается, т.е. если в наследнике мы объявляем её с другими параметрами она заменяет функцию предка совсем, а не перегружается. =)
|