2010-06-19 1 views
3

Можно создать дубликат:
C++ class template of specific baseclassКак обеспечить, чтобы аргумент шаблона класса был получен из определенного класса Foo?

class Base 
{ 
... 
}; 

class Derived1 : public Base 
{ 
... 
}; 

class Derived2 : public Base 
{ 
... 
}; 

class Unrelated 
{ 
... 
}; 

Я хочу иметь шаблон класса ClassTemplate, который принимает в качестве параметра только классы Derived1 и Derived2, но не связаны между собой, так что я могу сделать:

ClassTemplate<Derived1> object1; 

ClassTemplate<Derived2> object2; 

, но я не должен был делать:

ClassTemplate<Unrelated> object3; 

Возможно ли вообще?

ответ

5

Использование boost::is_base_of из Boost.TypeTraits:

template<class T> class ClassTemplate { 
    BOOST_STATIC_ASSERT((boost::is_base_of<Base, T>::value)); 
}; 
1

Использование увеличения статических проверок в сочетании с типом черты

Смежные вопросы