Цитата(vizir1989 @ 24.12.2012, 21:35)
Доброго времени суток.
В ходе написания программы возник следующий вопрос.
У меня есть базовый шаблонный класс. От него наследуются другие классы (тоже шаблоны). И в этих классах приходится писать следующие:
className<T1, T2>::funcName(x, y);
и у меня возник вопрос, а можно ли инстанцировать базовый класс в потомке один раз, а не постоянно писать className<T1, T2>?
Я обычно пишу так
template < typename _Type >
class A
{
public:
void setValue ( const _Type & value );
};
template < typename _Type >
class B : public A< _Type >
{
typedef B< _Type > ThisType;
typedef A< _Type > ParentType;
public:
// примеры использования
B ( const ThisType & other );
B ( const ParentType & other );
void init ()
{
ParentType::setValue( _Type() ); // либо так
this->setValue( _Type() ); // либо так
}
};