Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> перенос функции из protected в public 
:(
    Опции темы
vadiml
Дата 22.1.2008, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 2
Всего: 7



мне нужно получить доступ из-вне класса к функциям, расположенным в protected.

я для этого создал дочерний класс, где прописал inline функции с такими же именами, которые
являются просто вызовом функций родительского класса.

Но некоторые функции используют enum-ы, расположенные в protected, 
можно ли их вытянуть в public ?

PM MAIL Jabber   Вверх
archimed7592
Дата 22.1.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Код

class D
    : public B
{
public:
    typedef B::SomeEnum SomeEnum;
};



--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
vadiml
Дата 22.1.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 2
Всего: 7



это ни чего не даёт, компилятор так же ругается:
/usr/include/QtGui/qabstractslider.h:137: ошибка: ‘enum QAbstractSlider::SliderChange’ is protected

emun как был в protected, так и остался

конкретнее -- это:
это enum SliderChange класса QAbstractSlider. (Qt4)

в нём в секции protected есть функция
virtual void sliderChange(SliderChange change);

я создаю класс  MyQAbstractSlider
в котором в секции public пишу:
virtual void sliderChange(SliderChange change) { QAbstractSlider:: SliderChange(change); }
PM MAIL Jabber   Вверх
archimed7592
Дата 22.1.2008, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



typedef до или после объявления ф-ции?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
vadiml
Дата 22.1.2008, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 2
Всего: 7



я такое на всякий случай перепроверял, писал до

но typеdef -- это фактически синоним, он не меняет возможности доступа.

PM MAIL Jabber   Вверх
archimed7592
Дата 22.1.2008, 23:01 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



vadiml, что-то я туплю малость smile.
Есть специальная для этого конструкция:
Код

class B
{
protected:
  enum E { e1, e2 };
  void f(E e);
};

class D
    : public B
{
public:
    using B::E;
    using B::e1;
    using B::e2;
    using B::f;
};


Это сообщение отредактировал(а) archimed7592 - 22.1.2008, 23:05


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
vadiml
Дата 22.1.2008, 23:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 2
Всего: 7



такое компилятор съел

как-то не думал ранее про такое использование using, завтра буду подробнее пробовать

спасибо
PM MAIL Jabber   Вверх
archimed7592
Дата 22.1.2008, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 58
Всего: 93



Цитата(vadiml @  22.1.2008,  23:40 Найти цитируемый пост)
такое компилятор съел

Любой, соответствующий Стандарту обязан "съесть". Т.е., в принципе, тебе даже не нужно писать inline заглушки - только конструкторы и using нужных тебе protected функций и/или типов.


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0910 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.