将可变数量的参数传递给构造函数

Moh*_*ain 4 c++ c++11

我想完成以下任务:

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).

有没有人知道如何做到这一点?

Ray*_*hen 7

写一堆重载,每个重载采用不同数量的参数.

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)

  • 您应该使用`&&`和模板参数推导,以便您可以正确转发参数. (2认同)