gpt4 book ai didi

c++ - C++中根据字符串创建对象

转载 作者:太空狗 更新时间:2023-10-29 19:44:06 24 4
gpt4 key购买 nike

我有一个父类(super class)的几个子类,想根据给定的字符串创建特定类的实例

Superclass instantiateSubclass(string s);

我不想使用巨大的 if 级联,而是使用配置文件来完成此操作。

这允许我在不重新编译的情况下更改字符串的可能值,我希望它能产生更简洁的代码。

配置文件应该包含诸如“subclass1”、“subclass2”之类的字符串,但是我该如何根据字符串创建类呢?

基本上我需要一个从字符串到类的映射,这在 C++ 中可行吗?我认为其他语言为这个问题提供了反射等可能性。

最佳答案

注册你的类(class):

struct Base;

struct Derived1 : Base
{
static Base * create() { return new Derived1; }
};

std::map<std::string, Base * (*)()> registry = { {"derived1", &Derived1::create},
/* ... */
};

制作:

Base * create_from_string(std::string const & s)
{
auto it = registry.find(s);
return it == registry.end() ? nullptr : (it->second)();
}

关于c++ - C++中根据字符串创建对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14508076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com