Powiedzmy, że mamy hierarchię klas. Na dole mamy Base i u góry Derived. Jak określić klasę obiektu, nawet jeśli jest konwertowana na wskaźnik klasy bazowej.Jak określić rzeczywisty typ obiektu w środowisku wykonawczym w C++;
Base* b = new Derived():
typeid(b).name(); // i want this to tell me that this is actually derived not base object
Czy istnieje sposób inny niż ręczna implementacja pola ciąg lub taka i wirtualna funkcja get?
PS: I mówisz kompilator niezależne rozwiązanie
Jest to możliwe, jak wyjaśniono w odpowiedzi, ale prawie zawsze jest to niewłaściwe. Co próbujesz osiągnąć tutaj? –
Nic dokładnie nie jest po to, aby się spierać :) – user1079475
Więcej wersji aplikacji: http://stackoverflow.com/questions/351845/finding-the-type-of-an-object-in-c || Bardziej ogólna wersja, która nie wspomina o dziedziczeniu: http://stackoverflow.com/questions/11310898/how-do-i-get-the-type-of-a-variable –