Представьте, что у меня есть куча связанных с С++ классов (все они расширяют один и тот же базовый класс и предоставляют один и тот же конструктор), которые я объявлял в общем заголовочном файле (который я включаю), и их реализации в некоторых других файлах (которые я компилирую и связывать статически как часть сборки моей программы).
Я хотел бы иметь возможность создать экземпляр одного из них, передающего имя, которое является параметром, который должен быть передан моей программе (либо в виде командной строки, либо как макрос компиляции).
Единственное возможное решение, которое я вижу, - использовать макрос:
#ifndef CLASS_NAME
#define CLASS_NAME MyDefaultClassToUse
#endif
BaseClass* o = new CLASS_NAME(param1, param2, ..);
Это единственный ценный подход?