Я новичок в C ++ … Итак, этот вопрос может быть глупым …
У меня есть, например, следующая структура
template<typename _TpIn, typename _TpOut>
struct TypesKernel {
typedef _TpIn input_type;
typedef _TpOut output_type;
};
И теперь я хочу использовать его в шаблонах. Например:
template<typename _TypesKernel>
class A {
typedef typename _TypesKernel::input_type input_type;
typedef typename _TypesKernel::output_type output_type;
....
};
Можно ли как-то избежать дублирования typedef для любого класса, с которым я хочу использовать TypesKernel?
Заранее спасибо!
Если вам нужны там определения типов, единственный способ, которым я их вижу, — это либо определить, как вы, либо наследовать от чего-то. Ваш класс может использовать TypesKernel в качестве базового класса, или они оба могут использовать общий базовый класс, который не имеет ничего, кроме typedefs. (как в std::
рамки для итераторов).
Однако наследование не обязательно лучше, во многих случаях вы можете жить с дублированием.
Других решений пока нет …