有条件实例化一个模板,我有一个模板类在运行时
template <class T>
class myClass
{
public:
/* functions */
private:
typename T::Indices myIndices;
};
现在我主要的代码,我要实例根据条件的模板类。像:
myFunc(int operation)
{
switch (operation) {
case 0:
// Instantiate myClass with <A>
auto_ptr < myClass <A> > ptr = new myClass<A>();
case 1:
// Instantiate myClass with <B>
auto_ptr < myClass <B> > ptr = new myClass<B>();
case 2:
// Instantiate myClass with <C>
....
}
// Use ptr here..
}
现在,这种方法的问题是,auto_ptr<>
将在switch{}
末死亡。 而且我不能在函数的开始处声明它,因为我不知道将会事先实例化的类型。
我知道我试图在编译时(使用模板)实现运行时的事情,但仍然想知道是否有一些更好的方法来做到这一点。
你似乎有一个术语问题。您_instantiate_类模板来创建一个类。随后可以创建该类型的对象。在给出的例子中,你希望**实例化** myClass ** **两次**,使用参数A和B,但是**创建一个**对象。 – MSalters 2009-11-27 11:45:04