Я слишком долго программировал на Java, и возвращаюсь к некоторому C++. Я хочу написать код, который задал класс (либо тип_info, либо его имя в строке), может создать экземпляр этого класса. Для простоты предположим, что нужно только вызвать конструктор по умолчанию. Возможно ли это в C++, и если это не произойдет в будущем TR?Возможно ли создать экземпляр объекта с его типом в C++?
Я нашел способ сделать это, но я надеюсь, что есть нечто более «динамичное». Для классов, которые я ожидаю создать (это сама по себе проблема, так как я хочу оставить это решение до конфигурации), я создал фабрику singleton со статически созданным экземпляром, который регистрируется с другим классом. например. для класса Foo существует также FooFactory, который имеет статический экземпляр FooFactory, так что при запуске программы вызывается конструктор FooFactory, который регистрируется с другим классом. Затем, когда я хочу создать Foo во время выполнения, я нахожу FooFactory и вызываю его для создания экземпляра Foo. Есть ли что-то лучше для этого в C++? Я предполагаю, что я просто испорчен богатым отражением в Java/C#.
В контексте я пытаюсь применить некоторые концепции контейнеров IOC, к которым я привык в мире Java, к C++, и надеюсь, что смогу сделать это как можно более динамичным, без необходимости добавлять фабрику класс для каждого другого класса в моем приложении.
В качестве продолжения можно передать «тип» в C++? то есть. передать не объект Foo, а класс Foo, как параметр функции? Явный эквивалент Java, который я рассматриваю, - это метод, который принимает параметр класса, и вы можете перейти в Foo.class – Greencpp