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