从不同的 class 动态生成新的 class 对象
Dynamically generate new class objects from different classes
我目前正在为纸牌游戏编写模拟器。我正在尝试编写一个移动生成器。我有一个基础 class "Card" 我从中导出每张卡片(大约 150 个不同的卡片)。它们非常具体,所以我无法在单个 class 中实现它们(而且我不想使用任何脚本语言)。
我需要(想要)做的事情:
代码 150 classes 来自 "Card"。现在我需要在运行时生成新对象并将它们推送到我的板中。
例如:
std::vector<Card*> board;
board.push_back(new Card132());
那么我如何才能做到这一点 - 因为我需要在运行时决定我需要生成哪个对象(从哪个class)?
提前致谢。
代码必须能够自己决定生成哪张卡片。
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 ...
使用工厂模式。
每个 class 的一个对象是静态实例化的,并用名称在映射中注册自己。所有 classes 都来自相同的基础。
当你想构造一个特定类型的对象时,将它的名称传递给工厂,查找类型,生成一个新对象,然后 return 通过基指针对象。
添加新卡就是编写新的 class 并在工厂注册名称的问题。
我目前正在为纸牌游戏编写模拟器。我正在尝试编写一个移动生成器。我有一个基础 class "Card" 我从中导出每张卡片(大约 150 个不同的卡片)。它们非常具体,所以我无法在单个 class 中实现它们(而且我不想使用任何脚本语言)。
我需要(想要)做的事情: 代码 150 classes 来自 "Card"。现在我需要在运行时生成新对象并将它们推送到我的板中。
例如:
std::vector<Card*> board;
board.push_back(new Card132());
那么我如何才能做到这一点 - 因为我需要在运行时决定我需要生成哪个对象(从哪个class)?
提前致谢。
代码必须能够自己决定生成哪张卡片。
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 ...
使用工厂模式。
每个 class 的一个对象是静态实例化的,并用名称在映射中注册自己。所有 classes 都来自相同的基础。
当你想构造一个特定类型的对象时,将它的名称传递给工厂,查找类型,生成一个新对象,然后 return 通过基指针对象。
添加新卡就是编写新的 class 并在工厂注册名称的问题。