动态分配数据类型C++

Dynamically Assigning a Data type C++

本文关键字:C++ 数据类型 动态分配      更新时间:2023-10-16

有没有一种方法可以将数据类型写入字符串,然后从字符串实例化该类型。

我有一个地图编辑器,它可以创建一个定义的地图(即:"aa"=沙瓷砖,"ab"=草瓷砖),但如果我不需要一个沉重的switch语句,而是可以访问瓷砖的定义(即:我输入"aa"并接收一个沙瓷砖),然后直接实例化沙瓷砖,那会很方便。这里有一些伪代码,以防我太含糊了。

而不是:

(以下伪代码片段假设所有瓦片都继承自某种瓦片类,该类具有接受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);

感谢阅读!

您可以简单地从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);