Речь идет о создании объекта в run-time по его имени (char*, String) в среде Билдера. Тут по ходу дела понадобилось провести небольшое исследование на эту тему, из которого я уяснил, что люди сабжом интересуются, но предложенные способы не дают окончательного решения. Сразу оговорюсь, что только средствами языка у меня тоже не получилось. Но вот такой трюк может пройти. Пусть String: ClassName - имя класса. Дальше предполагаем, что класс уже зарегистрирован (иначе ничего не получится), возьмем указатель на VMT (то, что в Билдере называется TMetaClass*): TMetaClass* metaClass = GetClass(ClassName); if (metaClass) { //Если метакласс найден, определяем размер класса. int objSize = TObject::InstanceSize(metaClass); //Выделяем память под экземпляр класса TObject* obj = (TObject*)new BYTE[objSize]; //Иницализируем экземпляр класса TObject::InitInstance(metaClass, obj); //Присваиваем результат result = (TComponent*)obj; } Такая конструкция мне всретилась в одной из статей, но за бортом остался вопрос: а как же теперь создать сам объект, ведь метод Create недоступен для тех, кто программирует на Билдере? Если рассматривать объекты, произведенные от класса TComponent, можно использовать трюк, связанный с тем, что метод Create для этих классов является виртуальным и его смещение в таблице VMT фиксированное (=0x12). Детали не привожу, но поскольку указатель на VMT у нас есть (metaClass), то получить адрес процедуры Create уже ничего не стоит. И еще: инициировать новый экземпляр класса можно и немного по-другому: адрес процедуры NewInstance находится тоже в VMT со смещением (-0xC).
crypto Бгы) Педали не жмут? http://www.google.com/search?hl=ru&client=opera&rls=ru&hs=FOE&q=%D0%9F%D0%B0%D1%82%D1%82%D0%B5%D1%80%D0%BD+Factory&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
crypto Конкретно жаба тут не при чем. То что тебе нужно называется Паттерн "Фабрика". Он реализуется почти в каждом языке, и в каждом языке по-своему. Ищи реализации фабрики на C++ и выбирай наиболее подходящую под твои условия.
_DEN_ Дал бы уж ссылку на Gamma или Александреску. Там с примерами реализации. Хотя Александреску маньяк еще тот. Если с его подходом изучать С++, то его никогда весь не выучишь :-D
_DEN_ Мож хватить флеймить. Мы здесь не обсуждаем кто круче, и что прошлый век, ведь так? //off Я здесь имел ввиду, что вот изучаешь, думаешь что уже дофига знаешь в С++, чтоб любую задачу решить, а читая этих авторов, кажется, что по сути то и не знаешь С++ толком... Хотя где-то на рсдн 1 чел писал, что таких извращенцев, как Александреску надо с рождения убивать :-D