Oggetto, doppia "g". Comunque sia, io aggiungerei un membro privato che identifica univocamente il tipo della figura solida rappresentata dall'oggetto in questione. Naturalmente il costruttore setterà con il valore appropriato questo campo, dopodiché costruire un metodo che vada a leggere il flag e lo interpreti; è cosa alquanto banale.
Non ho programmato granché in c++, pero trovandomi nella tua situazione penso farei proprio cosi!![]()