А можно попробовать объединить Описатель и класс IObject. Если к CObject применить умные указатели (которые считают количество ссылок на объект), то CObject достаточно создать один раз а IObject будет и как Описатель и как Указатель - то есть можно работать с CObject через разные Описатели. Если у Object много общих ресурсов но по разному параметризированных то это сильно сократит расходы памяти. К тому же Object будет всегда гарантировано удаляться если даже заранее не известна последовательность вызовов delete из разных потоков.
* инвариант параметров. например ширина окна не может быть больше ширины дисплея, если только окно не фейковое. Правда его прийдется в конструкторе класса один фиг проверять снова, так как члены данных придется делать открытыми, чтобы конструкторы объектов имели к ним доступ. ненадежно.
|
В том случае что я описал в функцию создания объекта окна можно передать Указатель-Описатель объекта дисплея (хотя скорей всего данные дисплея хранятся в объекте конфиге или в чем то подобном) и тогда Описатель окна обращатеся к параметрам Описателя дисплея и корректно их читает.