我想将类的类型从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的池。
答案 0 :(得分:0)
没有
将来,当您撰写问题时,请提供有关您尝试解决的基本问题的一些信息。然后当你的尝试解决方案走到尽头时,回答的人可以为你解决潜在的问题。
或者问一个关于这个潜在问题的新问题(通过询问问题按钮)。
答案 1 :(得分:0)
在您的示例中,T
和new_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
};