有没有办法定义一个模板类,它只能与来自特定类层次结构的派生类一起使用?
说我有动物基类
class Animal{
public:
virtual ~Animal();
virtual void shout() = 0;
};
和 Dog、Cat、Tiger 是派生类
class Dog : public Animal{
public:
virtual void shout(){
cout<<"Bark";
}
}
class Cat : public Animal{
public:
virtual void shout()
{
cout<<"Meow";
}
}
我需要定义一个模板类说'AnimalTemplate',它只能与Animal的派生类一起使用,所以如果我尝试做'AnimalTemplate< Duck >',我应该得到编译错误(或一些错误),即使Duck在其中定义了一个方法shout()。(这个问题主要是让我了解我们是否可以将 OO 范式与通用编程相结合)