有没有办法定义一个模板类,只能用于特定类层次结构的派生类?类层次结构的模板类?
说我有动物基类
class Animal{
public:
virtual ~Animal();
virtual void shout() = 0;
};
和狗,猫,虎都派生类
class Dog : public Animal{
public:
virtual void shout(){
cout<<"Bark";
}
}
class Cat : public Animal{
public:
virtual void shout()
{
cout<<"Meow";
}
}
我需要定义一个模板类说,只能使用“AnimalTemplate”派生类动物,所以如果我尝试做'动物模板<鸭'>,我应该得到编译错误(或一些错误),即使鸭有一个方法shout()定义在它。 (这个问题主要是为了解我们是否可以将OO范式与Generic编程混合)
等等,是不是也是鸭子的动物呢? – DanielKO
对于这个讨论可以说,鸭子不是动物,他们从不同的基类叫()鸟叫。 :) – Coder777
你使用的是C++ 11吗?如果是这样,你可以使用[std :: is_base_of](http://en.cppreference.com/w/cpp/types/is_base_of)和[static_assert](http://en.cppreference.com/w/cpp/ language/static_assert) –