【发布时间】:2015-02-09 17:31:49
【问题描述】:
我正在为使用可变参数模板构建游戏对象的 2D 游戏引擎编写实体组件系统。这是对象类,它只是所有组件的容器。我删除了不相关的东西。
template<class ... Components>
class Object : public Components...{
public:
Object(Game* game) : Components(game)...{
}
};
组件由对象继承,但我试图找到检查这些组件类型的最佳方法,以便它们能够正确地相互通信。例如,物理组件将包含对象的更新位置。 Drawable 组件需要获取该位置,以便可以在世界上正确的位置进行绘制。我想向 Object 添加一个更新函数,用于更新每个组件并在当前组件之间传输可以/需要传输的任何信息。
【问题讨论】:
-
您能否阐明您的要求,例如使用更多代码?我可能遗漏了一些东西,因为如果您只需要 Drawable 组件来使用物理协调,只需编写类似
void Object::update() {this->draw(*this);}的内容,假设您有void Drawable::draw(const Physics &)。只要右Drawable和Physics在可变参数Components...中,这将起作用
标签: c++ templates variadic-templates