【发布时间】:2015-09-25 20:55:32
【问题描述】:
我目前正在为纸牌游戏编写模拟器。我正在尝试编写移动生成器。我有一个基类“卡片”,我从中派生出每张卡片(大约 150 种不同的卡片)。它们非常具体,因此我无法在单个类中实现它们(而且我不想使用任何脚本语言)。
我需要(想要)做什么: 代码 150 类派生自“卡”。现在我需要在运行时生成新对象并将它们推送到我的板上。
例如:
std::vector<Card*> board;
board.push_back(new Card132());
那么我怎么能做到这一点 - 因为我需要决定在运行时我需要生成哪个对象(从哪个类)?
提前致谢。
【问题讨论】:
-
Card132和CardNNN之间选择的依据是什么? -
这个设计有点味道,但你总是可以只使用一组工厂函数。
-
首先考虑在你的向量中存储smart pointers。
-
150 卡片的表示是可笑,我敢说没有必要!!!!学习继承、组合等,不要对你的代码一无所知。
标签: c++ object reflection polymorphism metaprogramming