Название: Взаимодействие между классами Отправлено: ti0 от Июнь 15, 2014, 13:04 При написании более-менее сложных приложений часто сталкиваюсь с следующей ситуацией:
есть классы A, B и С. В классе "А" пишем b = new B, c = new C; Вопрос собственно в том, как взаимодействовать между классами B и C миную А? Т.е. как вызвать метод из C в B, например? Использовать статические методы не выход. Название: Re: Взаимодействие между классами Отправлено: kambala от Июнь 15, 2014, 13:24 в Qt — сигналы/слоты, «просто так» — указатель на объект передавать
Название: Re: Взаимодействие между классами Отправлено: _Bers от Июнь 15, 2014, 14:36 При написании более-менее сложных приложений часто сталкиваюсь с следующей ситуацией: есть классы A, B и С. В классе "А" пишем b = new B, c = new C; Вопрос собственно в том, как взаимодействовать между классами B и C миную А? Т.е. как вызвать метод из C в B, например? Использовать статические методы не выход. 1. можно сообщить объекту C указатель на объект B. И тогда объект C сможет дергать объект B 2. можно использовать делегаты. Например: std::function, или кутешные сигналы-слоты 3. можно использовать EventSystem. Объект С излучает сообщение в эфир, а его слушает объект B. Название: Re: Взаимодействие между классами Отправлено: ti0 от Июнь 15, 2014, 16:24 Спасибо за ответы. И еще один маленький вопросик)) Есть классы A, B, C. Методы классов B и C объявлены одинаковыми, но в самих методах содержимое разное. Нужно в зависимости от настроек, использовать в классе А либо В, либо С. Как это организовать?
Тут сильно просятся плагины/dll библиотеки, но я бы хотел обойтись без них. Название: Re: Взаимодействие между классами Отправлено: Bepec от Июнь 15, 2014, 16:33 Наследовать их от общего предка, потом указатель просто подставлять нужный.
Название: Re: Взаимодействие между классами Отправлено: ti0 от Июнь 19, 2014, 23:59 По поводу предыдущего сообщения. Нужно использовать виртуальный класс
Название: Re: Взаимодействие между классами Отправлено: Bepec от Июнь 20, 2014, 07:08 Скорее класс с виртуальными методами :) От которого всё равно придётся наследоваться :D
|