Re: Factory patterns in library code
"KAORU" <kaoru.yanase20050808@gmail.com>
There are two prejects. "factory_test.exe" is main executable project,
and "factory_lib.lib" is a static-linked library project.
The item_factory class has a map container hold pairs of item-ID and a
pointer to item derived from item_base class.
Two objects of item_1 and item_2 should be automatically registered
into item_factory in constructor of item_registrar class when this
application was initialized.
But if I removed dummy_1() and dummy_2() functions, no item
registered.
I know why. (Because there are no reference from main.cpp to
item_1.cpp and item_2.cpp)
Are there any recommended solution in a platform-independent way or
any library ?
Seems you try to use the library backwards, and getting hit by that.
The static library is a collection of object files, from which the linker
will include only those it sees needed to resolve symbols. IOW that have
anything needed/referenced from already selected objects.
Normally this works fine with factories and auto-registration: whatever
modules are dragged in naturally, will have their stuff registered before
main too.
If you have stuff that has no attachment, but you need always -- do not put
it in a lib. Specify it directly. (or look up switches to force inclusion).
If you want the library version, you need those 'dummy' functions --
certainly you should call them InitWhateverComponent(), and order to call
from main or some descendant. The function does not need to do anything. If
you want to avoid the call itself just define a table of function pointers,
inited with {} including yours.
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]