我想完成以下任务:
Entity e;
e.AddComponent<CPosition>(128, 128); //method should instantiate a new CPosition(128,128)
e.AddComponent<CSprite>(some, other, args); //etc
Run Code Online (Sandbox Code Playgroud)
重要的部分是AddComponent方法.它应该尝试使用传递的参数构造泛型类型.我相信C++ 11的可变参数模板可以将参数转发给构造函数.但是,我还没有访问此功能(VS2010).
有没有人知道如何做到这一点?
写一堆重载,每个重载采用不同数量的参数.
class Entity
{
public:
template<typename T>
void AddComponent() { component_ = new T(); }
template<typename T, typename T1>
void AddComponent(T1 t1) { component_ = new T(t1); }
template<typename T, typename T1, typename T2>
void AddComponent(T1 t1, T2 t2) { component_ = new T(t1, t2); }
// etc
...
};
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4433 次 |
最近记录: |