我有一个模板类
template <class T>
class myClass
{
public:
/* 函数 */
private:
typename T::Indices myIndices;
};
</code> </pre>
<p>现在在我的主代码中,我想根据条件实例化模板类。例如:</p>
<pre><code>
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{}
结束时失效。我无法在函数开头声明它,因为我事先不知道将实例化的类型。
我知道我正在尝试在编译时实现运行时操作(使用模板),但仍然想知道是否有更好的方法来解决这个问题。
myClass
两次,但只创建一个对象。 - MSalters