我可以使用模板函数参数c ++更改模板类类型

时间:2017-11-21 18:59:19

标签: c++ templates typename

我想将类的类型从T更改为new_T,是否可能?

template<class T,int count>
class obj_pool{
  public:
    template<class new_T>
    void Retypedef();
};

例如,为int obj_pool<int> pool创建了obj_pool,当用户调用pool.Retypedef<double>()函数时,该池成为double的池。

2 个答案:

答案 0 :(得分:0)

没有

将来,当您撰写问题时,请提供有关您尝试解决的基本问题的一些信息。然后当你的尝试解决方案走到尽头时,回答的人可以为你解决潜在的问题。

或者问一个关于这个潜在问题的新问题(通过询问问题按钮)。

答案 1 :(得分:0)

在您的示例中,Tnew_T是两个不同的参数。使用此模板可能如下所示:

obj_pool<int,3> x;
x.Retypedef<double>();   // <- passing different types for new_T
x.Retypedef<float>();    // <- does not change the type of x

x.Retypedef<int>();      // ..and of course you can use the same type for
                         // new_T as for T

如果您希望new_T始终与T相同,那么您可以简单地写一下:

template<class T,int count>
class obj_pool{
  public:
    void Retypedef();   // can use T 
};