Russian Qt Forum

Программирование => С/C++ => Тема начата: Rosster от Апрель 18, 2013, 20:04



Название: Имя класса из строки
Отправлено: Rosster от Апрель 18, 2013, 20:04
В Java есть метод Class.forname(string). Он дает возможность взять имя класса из строки, есть альтернатива в С++?
Нужно что-то типа ClassFromName("MyClass") *obj = objOld;
Или может Qt имеет свой способ? Тоже подойдет.


Название: Re: Имя класса из строки
Отправлено: GreatSnake от Апрель 18, 2013, 20:50
В Java есть метод Class.forname(string). Он дает возможность взять имя класса из строки, есть альтернатива в С++?
Взять или всё-таки создать? Если последнее, то
Код
C++ (Qt)
QWidget * QUiLoader::createWidget ( const QString & className, QWidget * parent = 0, const QString & name = QString() )


Название: Re: Имя класса из строки
Отправлено: Rosster от Апрель 18, 2013, 22:43
Не совсем. Фишка в том, что есть штук 10-20 классов в названии которых различие только в цифре (идиотизм, но не я придумал))) И общий класс для всех. В метод приходит как раз указатель на объект этого общего класса, а мне нужно каждый Class1 - Class20 перебрать через static_cast. Это конечно можно сделать, но красивей было бы именно как в Java.
Код:
void function(ClassMain *main)
{
     switch(_num)
    {
          case 1: static_cast<Class1>(main); .....
          case 2: static_cast<Class2>(main); .....
    }
}