Basically, I want to create a series of objects dynamically in an arbitrary order. If I have Class1 and Class2 that both inherit from BaseClass, I want to do something like this: (obviously this will not function, but I think you'll get the point)

Code:
class list_of_classes[3] = {Class1, Class2, Class1};
int class_num = 0;

BaseClass * someObject = new list_of_classes[class_num];

void CreateNextClass()
{
delete someObject;
someObject = new list_of_classes[class_num];
class_num++;
}
To give some context, I am building a game where Class1, Class2, etc... are types of levels, and I want to be able to load the levels in an arbitrary order. I understand that I could just create an array of objects at compile time and cycle through them at run time, but this doesn't seem very efficient as the number of levels increases, nor does it seem object-oriented. Is there a way to do this, or do I need to take an entirely different approach? Thank you so much for any advice.