crossplatform.ru

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

> Помогите разобраться как правильно бы унаследоваться., Вообщем шаблоное что наверно
maxvanceffer
  опции профиля:
сообщение 20.12.2009, 18:52
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 72
Регистрация: 30.5.2009
Из: Moldova
Пользователь №: 790

Спасибо сказали: 0 раз(а)




Репутация:   0  


Стоит вот такая задача :
У меня в программе есть несколько так называемых страничек (WidgetPage) их класс унаследован от QWidget , так вот у них одинаковые функции и задачи в принципе.
Управляет ими класс PageManager, каждая из страничек унаследована от класса Page который содержит информацию необходимою для PageManager. И тут вот такая загвоздка хочу использовать сигналы и слоты в классе Page. Но получаеться что QObject должен быть только у одного из базового класса .

В структура для нагладности :
// Так наследуеться странички
WidgetPage:public QWidget,public Page{....};

//А в манагере страничек хотелось бы регестрировать странички для упровления ими вот таким способом
void PageManager::register(Page *ptr){
connect(ptr,SIGNAL(NeedData()),this,SLOT(giveData));
}

Вообщем двумя словами как сделать бы так чтоб у всех строничек сто пудов были одни и тежи сигналы и слоты (естественно при правильном наследовании) .....

Первое что приходит на ум это унаследовать Page от QWidget а уже потом WidgetPage:public Page . И вопрос правильно ли это будет ?

Сообщение отредактировал maxvanceffer - 20.12.2009, 18:54
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
DEADHUNT
  опции профиля:
сообщение 20.12.2009, 21:24
Сообщение #2


Активный участник
***

Группа: Участник
Сообщений: 430
Регистрация: 15.4.2009
Пользователь №: 686

Спасибо сказали: 26 раз(а)




Репутация:   2  


да ошибся, и этот код это подтверждает
#include <iostream>
#include <iomanip>

class A {
    public:
        int a;
};

class B : public A {
    int b;
};

class C : public A {
    int c;
};

class D: virtual public B, virtual public C {
    public:
        D()
        {
            std::cout << std::hex << &(B::a) << "\t" << &(C::a);
        }
};

int main()
{
    D d;
    return 0;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 15.1.2025, 17:19