crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в using, какой-то непонятный для меня
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Litkevich Yuriy Дата 14.9.2018, 19:22
  Нашёл простой пример в книге "Стандарты программирования на С++" Герб Саттер и Андрей Александреску.
"Правило №38":
Цитата
Не забывайте о том, что перекрытие методов может скрывать перегруженные методы:
class Base
{
public:
virtual void foo(int);
virtual void foo(int, int);
void foo(int, int, int);
};

class Derived: public Base
{
public:
virtual void foo(int); // переопределяет Base::foo(int), скрывая все перегруженные
};
//---------
Derived d;
d.foo(1); // отлично работает
d.foo(1, 2); // ошибка компиляции, этот метод невидно
d.foo(1, 2, 3); // ошибка компиляции, этот метод невидно


Для того, чтобы перегруженные функции базового класса были видны в наследнике их нужно повторно объявить с помощью using:
class Derived: public Base
{
public:
virtual void foo(int); // переопределяет Base::foo(int), скрывая все перегруженные
using Base::foo;      // делает все прочие перегрузки Base::foo(...) в область видимости этого класса
};
guest Дата 26.4.2018, 6:04
 
Цитата(Litkevich Yuriy @ 2.4.2018, 6:57) *
Нашёл в исходниках Qt5:
class Q_WIDGETS_EXPORT QMenu : public QWidget
{
using QWidget::addAction;
//...
}
что здесь происходит?

http://en.cppreference.com/w/cpp/language/...lass_definition
Litkevich Yuriy Дата 25.4.2018, 5:56
  using?
Алексей1153 Дата 2.4.2018, 9:04
  объявляется класс QMenu - потомок QWidget

а в чём подвох ? :o:
Litkevich Yuriy Дата 2.4.2018, 6:57
  Нашёл в исходниках Qt5:
class Q_WIDGETS_EXPORT QMenu : public QWidget
{
using QWidget::addAction;
//...
}
что здесь происходит?
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 29.3.2024, 16:28