Дано:
- Абстрактный класс Connection с потомками, реализуюшими его полностью (например SftpConnection).
- У класса Connection есть «клиент» — приложение (которое, собственно, соединения и создает).
- У Connection есть пачка методов, каждый из которых возвращает уникальний (в контексте данного соединения) идентификатор операции.
- Операции Connection фактически вызываются в пределах одного клиентского класса.
Задача: приложению надо засекать время операций по каждому соединению.
Моя задумка: каким-либо образом сделать композицию двух обьектов: Connection и ConnectionBenchmark. Но таким образом, чтоб имея экземпляр Connection можно было получить соответвтвующий экзампляр ConnectionBenchmark (в обратную сторону — не обязательно). Делать класс-аггрегатор (композицию) — не удобно, слишком много boilerplate-кода доведется писать.
Подскажите пожалуйста, как такое реализовать? Думается мне, система мета-объектов Qt должна такое позволять.
P.S. Пока только придумалось что-то типа QMap<Connection *, ConnectionBenchmark *>