I've reintroduced the clone() virtual method for all geometries. I've found comments stating it would have been replaced by copy constructors, but copy constructors can not be virtual: Geometry *g1, *g2; g2 = new Geometry(*g); // won't work g2 = g1->clone(); // will work --strk;