В настоящее время я пишу симулятор для карточной игры. Я пытаюсь закодировать генератор движения. У меня есть базовый класс «Карточка», из которого я получаю каждую карту (около 150 разных). Они довольно специфичны, поэтому я не могу реализовать их в рамках одного класса (и я не хочу использовать какой-либо язык сценариев).Динамически генерировать новые объекты класса из разных классов
Что мне нужно (хочу): Код 150 классов, полученных из «Карты». Теперь мне нужно генерировать новые объекты во время выполнения и вставлять их в свою доску.
Например:
std::vector<Card*> board;
board.push_back(new Card132());
Так как я хотел бы быть в состоянии сделать это - потому что нужно решить во время выполнения, какой объект (из какого класса) Мне нужно создать?
Заранее спасибо.
В чем заключается выбор между «Card132» и «CardNNN»? –
У этого дизайна есть запах, но вы всегда можете использовать массив заводских функций. –
Прежде всего рассмотрим сохранение [smart pointers] (http://en.cppreference.com/w/cpp/memory) в вашем векторе. –