У меня есть шаблон класса
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{}
.
И я не могу объявить это в начале функции, потому что я не знаю тип, который будет создан ранее.
Я знаю, что пытаюсь добиться выполнения во время компиляции (используя шаблон), но все же хотел знать, есть ли какой-нибудь лучший способ сделать это.