typeof ???



  • Hey Jungz, alles klar an der Bar?

    Wie kann ich eigentlich feststellen, von welchem Typ ein Objekt ist?

    Beispiel:

    class A {
       // ...
    };
    
    class B {
       // ...
    };
    
    // So 'was wäre gefragt:
    A aTest = A();
    if (typeof(aTest) == A) {
       // tue dies...
    }
    

    Wie kann ich das wohl anstellen?

    Thanks und greeetz
    Kessi



  • In diesem Fall weisst Du doch dass aTest ein A ist. Da es sich hier nichtmal um einen Zeiger handelt kann es auch keine von A abgeleitete Klasse sein.

    Wenn Polymorphie im Spiel ist hilft Dir möglicherweise dynamic_cast.

    A* test = new ChildOfA;
    if (dynamic_cast<ChildOfA*>(test) != 0) ...
    

    Es gibt auch noch ein typeid, allerdings fiele mir gerade kein brauchbarer Anwendungsfall dafür ein.



  • KessiMC schrieb:

    ...
    Wie kann ich eigentlich feststellen, von welchem Typ ein Objekt ist?
    ...

    Klassische Antwort:
    - Warum meinst Du das zu brauchen ? (In 95% der Fälle, in der Anfänger das meinen, brauchen sie es nicht wirklich).
    - C++ hat RTTI (runtime type information) mit der operator typeid (http://www.informit.com/guides/content.asp?g=cplusplus&seqNum=120&rl=1).

    Gruß,

    Simon2.



  • Ooookay...

    Die schreckliche Wahrheit ist: Ich brauche es tatsächlich nicht! Noch schlimmer ist, dass mich das gleich als Anfänger enttarnt.

    Naja, es könnte schlimmer sein 🙂 . Zumindest ist mein Problem gelöst und ich weiss, dass es theoretisch eine Möglichkeit gibt, das zu überprüfen.

    Thx also und greeetz
    Kessi



  • KessiMC schrieb:

    ...Die schreckliche Wahrheit ist...

    Ach so schrecklich ist das alles nicht. Zeig mir den, der nicht als Anfänger angefangen hat ! 😉

    Gruß,

    Simon2.

    P.S.: und ebenso hat wohl JEDER irgendwann mal gedacht, er bräuchte das ... und Keiner hier hat ausgelernt. 😃


Anmelden zum Antworten