Sebastian Faust wrote:[color=blue]
> Hi,
>
> I am currently reading the chapter about abstract factorys from "Modern C++
> Design" and wondering how it would be possible to create an object which has
> a constructor with parameters. At the moment I can't see any way how to
> solve this problem? Is there any way how to implement such?
> Furthermore I read in the GoF book that usually Abstract Factorys are
> implemented using Factory Methods. At the moment I can't see where in the
> generic case of Abstract Factory, Factory Methods are used.
>
> Thanks in advance
> Sebastian
>
>[/color]
Here is what I use:
class Any_Class
: public Some_Base_Class
{
public:
Any_Class(/* deault parameters */);
Any_Class(const Any_Class& ac); // copy constructor
Any_Class(istream& inp); // construct from text stream
virtual ~Any_Class();
static Some_Base_Class * create(istream& inp,
unsigned int id);
};
Some_Base_Class *
Any_Class ::
create(istream& inp, unsigned int id)
{
Some_Base_Class * p_base(NULL);
if (id = ID_ANY_CLASS)
{
p_base = new Any_Class(inp);
}
return p_base;
}
In the factory:
typedef Some_Base_Class * (*P_CREATE_FUNC)(istream& inp, id);
const P_CREATE_FUNC creation_table[] =
{
Any_Class::create()
};
const unsigned int NUM_CREATION_FUNCS = sizeof(creation_table)
/ sizeof(creation_table[0]);
Some_Base_Class *
Factory ::
create(istream& inp)
{
unsigned int id;
Some_Base_Class * p_base(NULL);
inp >> id;
for (unsigned int i = 0;
(p_base == NULL) && (i < NUM_CREATION_FUNCS); ++i)
{
p_base = (creation_table[i])(inp, id);
}
return p_base;
}
--
Thomas Matthews
C++ newsgroup welcome message:
http://www.slack.net/~shiva/welcome.txt
C++ Faq:
http://www.parashift.com/c++-faq-lite
C Faq:
http://www.eskimo.com/~scs/c-faq/top.html
alt.comp.lang.learn.c-c++ faq:
http://www.raos.demon.uk/acllc-c++/faq.html
Other sites:
http://www.josuttis.com -- C++ STL Library book
http://www.sgi.com/tech/stl -- Standard Template Library