我需要将以下 Java 概念移植到 C++ 中:
保存对象 id 键和类类型值的哈希映射:
Map<String, Class> _objectsBank = new HashMap<>();
在 init 方法的某处,我像这样填充银行:
_objectsBank .put("CLASS_ID_1", MyClass1.class);
_objectsBank .put("CLASS_ID_2", MyClass2.class);
....
然后,稍后,我根据需求构造了一个保存在该银行中的类的实例。一种“懒惰”的初始化:
private MyClass initNewProg(String name) {
MyClass instance;
try {
Class cl = _objectsBank.get(name);
java.lang.reflect.Constructor co = cl.getConstructor(String.class);
instance= (MyClass) co.newInstance(name);
return instance;
} catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e)
{
e.printStackTrace();
return null;
}
}
我将如何在 C++ 中做到这一点?如何将类类型设置为 std::map 值,以便稍后查询它以从中构造适当的实例?Boost库中有这样的东西吗?