LINUX.ORG.RU

«Прикрепить» обьект к другому обьекту

 , ,


0

2

Дано:

  1. Абстрактный класс Connection с потомками, реализуюшими его полностью (например SftpConnection).
  2. У класса Connection есть «клиент» — приложение (которое, собственно, соединения и создает).
  3. У Connection есть пачка методов, каждый из которых возвращает уникальний (в контексте данного соединения) идентификатор операции.
  4. Операции Connection фактически вызываются в пределах одного клиентского класса.

Задача: приложению надо засекать время операций по каждому соединению.

Моя задумка: каким-либо образом сделать композицию двух обьектов: Connection и ConnectionBenchmark. Но таким образом, чтоб имея экземпляр Connection можно было получить соответвтвующий экзампляр ConnectionBenchmark (в обратную сторону — не обязательно). Делать класс-аггрегатор (композицию) — не удобно, слишком много boilerplate-кода доведется писать.

Подскажите пожалуйста, как такое реализовать? Думается мне, система мета-объектов Qt должна такое позволять.

P.S. Пока только придумалось что-то типа QMap<Connection *, ConnectionBenchmark *>

Ответ на: комментарий от CrossFire

А если по KISS сделать ConnectionBenchmark * полем Connection?

По «бритве Оккама» оно там не нужно :)

KennyMinigun ★★★★★
() автор топика
Ответ на: комментарий от Chaser_Andrey

О, прикольно, прямо JS :)

Кстати, сделал так:

  • Создаю ConnectionBenchmark c parent = Connection
  • Чтоб достать Connection по ConnectionBenchmark::getParent()
  • В обратную сторону: connection->findChild<ConnectionBenchmark *>();

Можно бы вообще Connection сделать полем ConnectionBenchmark... Как выше посоветовали.

KennyMinigun ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.