Наследование, Множественное наследование от QWidget |
Здравствуйте, гость ( Вход | Регистрация )
Наследование, Множественное наследование от QWidget |
silver47 |
19.1.2011, 16:17
Сообщение
#1
|
Активный участник Группа: Участник Сообщений: 356 Регистрация: 1.4.2010 Пользователь №: 1584 Спасибо сказали: 40 раз(а) Репутация: 6 |
Доброго времени суток.
Задача такая: есть класс MainWindow, зависящий от QWidget. Есть другой класс, к примеру MainTab, который ставиться в QTabWidget, расположенного на MainWindow. Необходимо предоставить доступ из класса MainTab к элементам класса MainWindow. Хотел сделать, унаследовав MainTab от MainWindow. maintab.h:
Но, получается множественное наследование от QWidget (и MainWindow и MainTab наследуются от QWidget) переделываю на такое:
Ругается, что не указан класс до { Сделал передачей указателей на необходимые элементы класса MainWindow в конструктор MainTab. Вопрос: как следует это делать(не передачу указателя в конструкторе, а обращение к элементам одного класса из другого) правильно? Спасибо. |
|
|
Rocky |
19.1.2011, 16:47
Сообщение
#2
|
Старейший участник Группа: Участник Сообщений: 530 Регистрация: 22.12.2008 Из: Санкт-Петербург Пользователь №: 463 Спасибо сказали: 22 раз(а) Репутация: 7 |
А зачем MainTab-у наследоваться от QWidget, если MainWindow итак от него унаследован через QMainWidget?
Так получилось сделать или ругается? Если ругается, приведи больше кода тогда. А по-поводу передачи данных, я обычно так и делаю. Протаскиваю указатель на класс и через него уже получаю то, что нужно. Более извращенный вариант - создать один (или два) абстактных класса, и сделать их предками твоих классов. У наследников должна быть имплементация виртуальных методов базовых классов. Но от указателей никуда не деться. Правда они в этом случае уже будут не указателями на сами класс, а указателями на интерфейсы. Таким образом кроме тех функций, которые объявлены в базовых классах, твои классы ничего другого и знать не будут. Этот метод я использую, когда требуется вынести часть функционала в другую библиотеку например (в рамках одного проекта это делать имхо не следует). Хотя, вероятно, лучше было бы использовать механизм плагинов. Ну а так получается аналог COM по сути. |
|
|
Текстовая версия | Сейчас: 19.12.2024, 0:54 |