C++对象构造函数数组

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", &REGISTRY_XML::REGISTRY_XML},
}
Run Code Online (Sandbox Code Playgroud)

但我无法得到对象构造函数的地址.我相信这个问题必须已经解决,而且解决方案很简单,但我找不到它.

πάν*_*ῥεῖ 6

构造函数和析构函数是特殊函数,不能通过函数指针访问.

你需要创建一个静态成员函数

struct REGISTRY_XML {
    static IREGISTRY* create();
};
Run Code Online (Sandbox Code Playgroud)

因此你可以称之为

struct registry_entry registry_list[] =
{
    {"xml", &REGISTRY_XML::create},
}
Run Code Online (Sandbox Code Playgroud)