有没有办法可以将数据类型写入字符串,然后从字符串中实例化类型。
我有一个地图编辑器,可以创建一个定义地图(例如:“aa”=沙砖,“ab”=草地砖)但是如果不是有一个重要的开关声明,我会很方便访问瓷砖的定义(即:我传入“aa”并接收砂砖),然后直接实例化砂砖。这是一些伪代码,以防我太模糊了。
而不是:
(以下伪代码片段假设所有切片都继承自某种类型的tile类,该类具有接受x和y值的构造函数。)
switch definitions[tileType]{
case "sandTile":
sandTile tile(x,y);
break;
case "grassTile":
grassTile tile(x,y);
break;
case "waterTile":
waterTile tile(x,y);
break;
像
这样的东西string type = declarations[tileType];
magicalDataTypeCaster<type> tile(x,y);
感谢阅读!
答案 0 :(得分:3)
你可以简单地从tile类型字符串到一个带有x和y参数的函数的映射,并返回一个指向公共tile基类的指针...
typedef Tile* (*Creator)(X x, Y y);
std::map<std::string, Creator> creators;
creators["sandTile"] = &SandTile::create; // static Creator
....
Tile* a_tile = creators[type](x, y);