Lob*_*ter 2 c++ design-patterns
我有几个名为Child1,Child2等的类,继承自对象Parent.我需要通过名称创建一个对象,例如,如果我有字符串"Child1",我需要创建对象Child1,依此类推.
我想到了类似的东西:
struct registry_entry {
const char* name;
IREGISTRY* (*initializer)();
};
struct registry_entry registry_list[] =
{
{"xml", ®ISTRY_XML::REGISTRY_XML},
}
Run Code Online (Sandbox Code Playgroud)
但我无法得到对象构造函数的地址.我相信这个问题必须已经解决,而且解决方案很简单,但我找不到它.
构造函数和析构函数是特殊函数,不能通过函数指针访问.
你需要创建一个静态成员函数
struct REGISTRY_XML {
static IREGISTRY* create();
};
Run Code Online (Sandbox Code Playgroud)
因此你可以称之为
struct registry_entry registry_list[] =
{
{"xml", ®ISTRY_XML::create},
}
Run Code Online (Sandbox Code Playgroud)