I have two classes which are inheriting from class Base
class Derived_1:public Base
{
  public:
     getSomeFunc();
};
class Derived_2:public Base
{
  public:
     getSomeFunc();
};
Now what I want to write a function which takes base class pointer object and after dynamic casting finding the appropriate child and returns it so that we can call right version of getSomeFunc()
I tried to write
auto getChild(Base* ptr)
{
  Derived_1 * p = dynamic_cast<Derived_1*>(ptr)
  if(p)
  {
    return p;
  }
  else
  {
      Derived_2 * q = dynamic_cast<Derived_2*>(ptr)
      if(q)
      {
        return q;
      }
     else
     { 
        // some handling to avoid bugs!!
     }
  }
But It does not get compiled. Any way to serve my requirement.
Edit ----------------------------------
Error from compiler is - incorrect deduction of 'auto'. Compile is gcc
 
Aucun commentaire:
Enregistrer un commentaire