Palataan vielä esimerkkiin, jossa p on osoitin graafiseen olioon. Vaikka sijoituksen p = &y jälkeen voisikin kuvitella, että voidaan tehdä kutsu
p->muuta_koko(5);ei tämä ole mahdollista, koska graafisessa oliossa ei ole ao. metodia. Toisaalta jos ollaan VARMOJA siitä, että p osoittaa ympyrään, voidaan tietysti tehdä tyyppikonversio:
((cYmpyra *)p)->muuta_koko(5);Mistä tämä varmuus saadaan? Viimeisimmässä standardiluonnoksessa on tähän joitakin keinoja:
#include <typeinfo.h> // Esittelee typeinfo-luokan ... printf("%s\n",typeid(*p).name); // Jos halutaan merkkijonona olion tyyppi if ( typeid(*p) == typeid(cYmpyra) )...// Verrataan onko olio haluttua luokkaaToisaalta joskus haluttaisiin tietää onko olio jonkin toisen olion jälkeläinen. Joissakin oliokielissä tämä voidaan selvittää kutsulla
if ( *p is cSateellinenOlio) ... // EI valitettavasti C++:ssaUsein kuitenkin pärjätään dynaamisella tyypinmuunnoksella :
caKuvioJollaSade *ps = dynamic_cast<caKuvioJollaSade *>(p); if ( ps ) ps->muuta_koko(4);Eli jos p voidaan konvertoida osoittimeksi säteelliseen olioon, niin ps on osoitin samaan paikkaan kuin p, mutta tyypiltään sellainen että esimerkissä ps->muuta_koko on laillinen. Luokassa typeinfo on vielä funktio before:
if ( typeid(cSateellinenOlio).before(typeid(*p)) ...mutta tämä ei suinkaan palauta tietoa siitä, onko ehto totta perimisjärjestyksen mukaan, ainoastaan tietyn järjestysrelaation mukaan, jonka avulla tyypit voidaan sijoittaa esimerkiksi binääripuuhun.