Мне интересно, является ли Qt альтернативой typeid для распознавания типов переменных и получения их имени в формате, удобном для человека. Моя конкретная проблема заключается в следующем:Qt: typeid alternative
struct gArgument{
QString type;
void* arg;
};
void gargConverter(gArgument* oArg, T data){
oArg->type = typeid(data).name();
oArg->arg = static_cast<void*> (&data);
}
идея будет то, что обобщающим переменным для использования в качестве входных данных для функций. В качестве побочного узла tyeinfo, похоже, не будет правильно работать на моей системе (я использую MinGW на Windows 7), если я пытаюсь:
int i; std::cout << typeid(i).name() << std::endl;
QString s; std::cout << typeid(s).name() << std::endl;
double d; std::cout << typeid(d).name() << std::endl;
float f; std::cout << typeid(f).name() << std::endl;
Я получаю
i
7QString
d
f
Любое предложение?
Я думаю, что выход для вашей программы является ожидаемым выходом. Если я изменяю имена переменных 'i',' d' и 'f', это все равно дает мне эти строки. Точная написание выходного файла 'typeid :: name()' определяется реализацией, и, похоже, это дает вам имя, связанное с измененным именем C++ для типа. На самом деле это имеет определенный смысл. –
Typeinfo работает как ваша система. Почему вы думаете, что есть проблема? –
Для этого вам может не понадобиться Qt. Большинство реализаций на C++ обеспечивают то, что вам нужно, хотя оно специфично для компилятора. –