我有一个基类和n派生类.我想实例化一个派生类并将其发送到一个接收基类作为参数的函数.在函数内部,我通过使用dynamic_cast找到了哪种类型的派生类,但我不想使用几个if-else语句.相反,我想知道是否有办法找出哪个派生类是为了投出它.这里我以我的代码为例.
class animal{
public:
virtual ~animal() {}
int eyes;
};
class dog: public animal{
public:
int legs;
int tail;
};
class fish: public animal{
public:
int mostage;
};
void functionTest(animal* a){
if(dynamic_cast<fish*>(a) != NULL){
do_something();
}
else if(dynamic_cast<dog*>(a) != NULL){
do_something();
}
};
Run Code Online (Sandbox Code Playgroud)
我想对此有一个更一般的方法.像dynamic_cast(a)这样的东西.谢谢!