2013-11-25 4 views
0

Возможно ли выполнить отражение в C++ и создать экземпляр класса с именем его в виде строки?Возможно ли создать экземпляр класса с именем класса?

Cheers,

+1

В C++ нет отражения. Лучше всего отобразить строку в класс, который она представляет. – 0x499602D2

+0

В общем случае нет, конечно, вы можете написать код формы 'if (className ==" XYZ ") p = new XYZ(); else if (className == "ABC") p = new ABC(); 'etc – john

+1

Нет и нет. Но это звучит как проблема [XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem). Возможно, если бы вы описали то, что вы пытаетесь достичь, кто-то может предложить альтернативное решение. – Praetorian

ответ

5

Не существует языковой функции, которая позволяет вам это делать. Однако вы можете написать свой собственный набор заводских функций и поместить их в строку с индексированной картой.

0

Если вы можете использовать MFC, у него есть структура сериализации объектов, которая позволяет вам это делать. Это задокументировано here. Чтобы уточнить, MFC можно использовать для приложения с меньшим интерфейсом, и я видел, что он используется таким образом довольно успешно.

Если вы не можете использовать MFC, вы можете рассмотреть возможность расширения библиотеки сериализации. Но, насколько мне известно, он не предоставляет фабричную функцию, которая позволяет создавать классы с учетом их имен. Однако у него есть механизмы для динамического создания классов из их имен, которые вы сможете адаптировать к вашим уникальным потребностям. Соответствующий doc находится здесь.

Смежные вопросы