有條件實例化一個模板,我有一個模板類在運行時
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