小编Fed*_*rro的帖子

dynamic_cast用于多个派生类

我有一个基类和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)这样的东西.谢谢!

c++ rtti c++11

2
推荐指数
1
解决办法
428
查看次数

标签 统计

c++ ×1

c++11 ×1

rtti ×1