Название: Сигнал в не-QObject базовом абстрактном классе Отправлено: Pretorean от Август 12, 2011, 16:54 базовый абстракный класс должен гарантировать что все наследники смогут испустить сигнал определнного типа.
Код: class A: { работа с экземляром класса ведется через указатель на базовый класс Код: A *instA = static_cast<A *>(new B()) Это жизнеспособно ? Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Пантер от Август 12, 2011, 17:00 class A : public QObject
Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: lit-uriy от Август 12, 2011, 18:29 >>Это жизнеспособно ?
нет. Либо делать как Пантер сказал, либо прикручивать чужую систему сигналов (например, boost), но тогда тот ещё зоопарк получится. Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Пантер от Август 12, 2011, 18:34 Тут в готовых решениях была реализация сигналов/слотов - можно тоже использовать. (я не пробовал)
Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Pretorean от Август 12, 2011, 20:41 class A : public QObject так нельзя, потому что QObject не поддерживает множественное наследованиеНазвание: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Пантер от Август 12, 2011, 20:46 А может множественное наследование не нужно?
Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Disaron от Август 12, 2011, 20:47 Кхм... простите мое невежество, но разве можно экземпляр абстрактного класса создавать?
А сигналы виртуальными делать? Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: lit-uriy от Август 13, 2011, 08:19 >>но разве можно экземпляр абстрактного класса создавать?
а где тут экземпляр абстрактного класса? Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: m_ax от Август 13, 2011, 13:36 Цитировать Тут в готовых решениях была реализация сигналов/слотов - можно тоже использовать. (я не пробовал) А я пробывал)У меня была похожая ситуация, когда базовый класс имел сигналы (правда он был не чисто виртуальным, но это не важно). Решил я её использованием libssc. Код
Единственное что, SomeClass должен быть отнаследован от trackable Код
Можно пойти и другим путём: Код
Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: LisandreL от Август 13, 2011, 14:21 Можно пойти и другим путём: Тогда уж проще:Код Правда это гарантирует нам, что у B будет функция a(), но не гарантирует, что она обязательно будет сигналом. Коннект при этом будет выглядеть так: Код
Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Fregloin от Август 16, 2011, 08:58 я не понимаю, а зачем делать сигнал виртуальным? это ведь по сути сигнатура функции, тело все равно не определяется, а вызывается уже подключенный слот.
все сигналы являются protected. я тоже в базовом классе объявлял сигнал, а потом в наследниках его эмитил и конектил без virtual. Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: LisandreL от Август 16, 2011, 09:04 Pure virtual функция в данном случае - это такой узелок на память «не забудь переопределить в потомках».
Название: Re: Сигнал в не-QObject базовом абстрактном классе Отправлено: Pretorean от Август 16, 2011, 09:29 всем спасибо.
пересмотрел подход, вопрос можно закрывать |