Здравствуйте, remark, Вы писали:
Короче прикол такой.
Есть у меня подобная фабрика в одном многомодульном проекте.
в модуле 1 сидит фабрика и базовые интерфейсы моих сервисных класссов.
в модуле 2 сидят реализации моих сервисных класссов. наружу торчат только задефайненые индексы. То есть у либы весь интерфейс выглядит примерно так:
#define MY_ACTION_MOVE 1
#define MY_ACTION_COPY 2
#define MY_ACTION_PASTE 3
...
И так далее...
Это что из подключаемого ашника торчит.
Сами классы регистрились в статических глобальных переменных сипипишника.
Ясно дело, что в третий модуль они нифига не грузились

пришлось заюзать вызов формальной функции-болвана.
Вот такой прикол.
"WoldemaR" <15414@users.rsdn.ru> сообщил/сообщила в новостях следующее:
news:1812783@news.rsdn.ru...
> Здравствуйте, remark, Вы писали:
>
> Короче прикол такой.
> Есть у меня подобная фабрика в одном многомодульном проекте.
> в модуле 1 сидит фабрика и базовые интерфейсы моих сервисных класссов.
> в модуле 2 сидят реализации моих сервисных класссов. наружу торчат только задефайненые индексы. То есть у либы весь интерфейс выглядит примерно так:
> > #define MY_ACTION_MOVE 1
> #define MY_ACTION_COPY 2
> #define MY_ACTION_PASTE 3
> ...
>
> И так далее...
> Это что из подключаемого ашника торчит.
> Сами классы регистрились в статических глобальных переменных сипипишника.
>
> Ясно дело, что в третий модуль они нифига не грузились
> пришлось заюзать вызов формальной функции-болвана.
>
> Вот такой прикол.
Знаем, наступали.
Чтоб ничего не вызывать, можно применить такой прием: в ашнике объявляется класс в котором объявляется только конструктор по умолчанию. Тут же в ашнике объявляется нестатическая константа этого типа. Определение конструктора этого класса дается в cpp-шнике, в котором определены фабрики. Тогда стоит только включить заголовок в каком либо модуле другого проекта и линковка фабрик обеспечена.
Posted via RSDN NNTP Server 2.0
Здравствуйте, Oval, Вы писали:
O>Здравствуйте, Oval, Вы писали:
O>>Но в целом — супер!
O>>Выбросил Locki-фабрику нафик.
O>+ Когда избавился от Locki-фабрики пропала излишняя зависимость файлов проекта.
O>Мне кажется это надо запостить в comp.lang.c++
Там на английском надо?
Если на английском, то если кому не лень может запостить... ну с небольшой ссылочкой на автора
Здравствуйте, remark, Вы писали:
R>Здравствуйте, Oval, Вы писали:
O>>Здравствуйте, Oval, Вы писали:
O>>>Но в целом — супер!
O>>>Выбросил Locki-фабрику нафик.
O>>+ Когда избавился от Locki-фабрики пропала излишняя зависимость файлов проекта.
O>>Мне кажется это надо запостить в comp.lang.c++
R>Там на английском надо?
R>Если на английском, то если кому не лень может запостить... ну с небольшой ссылочкой на автора
Если выдавать эту фабрику как замену Loki::Factory, то надо доделать то, чего у меня ещё нет — параметры для конструктора. У меня в примере без параметров, а надо сделать:
create();
create(T1 p1);
create(T1 p1, T2 p2);
...
Проблему форвардинга параметров можно "решить" с помощью boost:(c)ref