从不同的类动态生成新的类对象

时间:2015-09-25 20:55:33

标签: c++ object reflection polymorphism metaprogramming

我正在为纸牌游戏编写模拟器。我正在尝试编码移动生成器。我有一个基类“卡”,我从中得到每张卡(大约150个不同的卡)。它们非常具体,所以我不能在一个类中实现它们(我不想使用任何脚本语言)。

我需要(想要)做什么: 代码150类来自“卡”。现在我需要在运行时生成新对象并将它们推入我的主板。

例如:

std::vector<Card*> board;
board.push_back(new Card132());

那么我怎么能做到这一点 - 因为我需要在运行时决定 我需要生成哪个对象(来自哪个类)?

提前致谢。

2 个答案:

答案 0 :(得分:0)

代码必须能够自己决定生成哪张卡。

if (want to generate card 1)
{
    board.push_back(new Card1());
}
else if (want to generate card 2)
{
    board.push_back(new Card2());
}
else if ...

答案 1 :(得分:0)

使用工厂模式。

每个类的对象都是静态实例化的,并在具有名称的映射中注册自己。所有类都来自同一个基础。

如果要构建特定类型的对象,请将其名称传递给工厂,查找类型,生成新类型并通过基础指针对象返回。

添加新卡就是编写一个新类并让它在工厂注册其名称的问题。