Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. How to determine in runtime the class type of inhetited class from common base class?

How to determine in runtime the class type of inhetited class from common base class?

Scheduled Pinned Locked Moved C / C++ / MFC
questiontutorial
4 Posts 3 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • O Offline
    O Offline
    oleg63
    wrote on last edited by
    #1

    In scenario like this, I've putted pseudo function GetRTTI(). How can I detect in the runtime the actual(derived) class type? class the_base { }; class A : public the_base { }; class B : public the_base { }; class C : public the_base { }; ... the_base* pList[] = { new A(), new B(), new C()); C* pTarget = nullptr; if(pList[2]->GetRTTI("C"))//detecting the actual type { pTarget = dynamic_cast< C* >(pList[2]);//casting to the type } //using pTarget ...

    D M 2 Replies Last reply
    0
    • O oleg63

      In scenario like this, I've putted pseudo function GetRTTI(). How can I detect in the runtime the actual(derived) class type? class the_base { }; class A : public the_base { }; class B : public the_base { }; class C : public the_base { }; ... the_base* pList[] = { new A(), new B(), new C()); C* pTarget = nullptr; if(pList[2]->GetRTTI("C"))//detecting the actual type { pTarget = dynamic_cast< C* >(pList[2]);//casting to the type } //using pTarget ...

      D Offline
      D Offline
      David Crow
      wrote on last edited by
      #2

      The class type or the class name? Is typeid() of any help?

      "One man's wage rise is another man's price increase." - Harold Wilson

      "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

      "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

      O 1 Reply Last reply
      0
      • D David Crow

        The class type or the class name? Is typeid() of any help?

        "One man's wage rise is another man's price increase." - Harold Wilson

        "Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons

        "Show me a community that obeys the Ten Commandments and I'll show you a less crowded prison system." - Anonymous

        O Offline
        O Offline
        oleg63
        wrote on last edited by
        #3

        Class name would be good. But indeed doesnt matter, I have to somehow detect the actual class for the further casting. Thanks.

        1 Reply Last reply
        0
        • O oleg63

          In scenario like this, I've putted pseudo function GetRTTI(). How can I detect in the runtime the actual(derived) class type? class the_base { }; class A : public the_base { }; class B : public the_base { }; class C : public the_base { }; ... the_base* pList[] = { new A(), new B(), new C()); C* pTarget = nullptr; if(pList[2]->GetRTTI("C"))//detecting the actual type { pTarget = dynamic_cast< C* >(pList[2]);//casting to the type } //using pTarget ...

          M Offline
          M Offline
          Maximilien
          wrote on last edited by
          #4

          I think that at runtime, you will have to use the (slow) dynamic_cast or have the classes know their types via a ID of some sort.

          Nihil obstat

          1 Reply Last reply
          0
          Reply
          • Reply as topic
          Log in to reply
          • Oldest to Newest
          • Newest to Oldest
          • Most Votes


          • Login

          • Don't have an account? Register

          • Login or register to search.
          • First post
            Last post
          0
          • Categories
          • Recent
          • Tags
          • Popular
          • World
          • Users
          • Groups