根据C中的字符串创建对象
发布时间:2020-12-16 10:32:50 所属栏目:百科 来源:网络整理
导读:我有一个超类的几个子类,并希望根据给定的字符串创建特定类的实例 Superclass instantiateSubclass(string s); 我没有使用巨大的if-cascade,而是希望使用配置文件来完成此任务. 这允许我在不重新编译的情况下更改字符串s的可能值,我希望它会导致更简洁的代码
我有一个超类的几个子类,并希望根据给定的字符串创建特定类的实例
Superclass instantiateSubclass(string s); 我没有使用巨大的if-cascade,而是希望使用配置文件来完成此任务. 这允许我在不重新编译的情况下更改字符串s的可能值,我希望它会导致更简洁的代码. 配置文件应该包含像“subclass1”,“subclass2”这样的字符串,但是如何根据字符串创建类呢? 基本上我需要从字符串到类的映射,这可能在C中吗?我认为其他语言提供了反映此问题的可能性. 解决方法
注册你的课程:
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)(); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |