[с++] динамическая идентификация типов

lada05

Столкнулся с подобным кодом

#include <iostream>

int total = 1;

template<class Object>
int type2id
{
static int i = 0;
if(!i)
{
i = total;
total++;
}
return i;
}

struct Test1 {};
struct Test2 {};
struct Test3 {};

int main
{
std::cout << type2id<Test1> << std::endl;
std::cout << type2id<Test1> << std::endl;
std::cout << type2id<Test2> << std::endl;
std::cout << type2id<Test3> << std::endl;
std::cout << type2id<Test1> << std::endl;
std::cout << type2id<Test2> << std::endl;
}

Какие с ним могут быть проблемы?

olega

Таким способом ты не узнаешь динамический тип объекта полиморфного класса. Ну и ясно, что этот код не потокобезопасен.

istran

А что тут динамического?

lada05

ID определяется в процессе выполнения. Идея вообще сомнительная, на мой взгляд.

apl13

ID чего в процессе выполнения чего, простите?

Dasar

тип определяется статически, а id к типу мапится динамически.

lada05

ID типа, в процессе выполнения программы. Почему вы спрашиваете?

Serab

типа ID чего, типа ч0 ваще :kruto:

apl13

М-да.

lada05

А?

apl13

Можешь глянуть сырцы http://qt-project.org/doc/qt-4.8/qmetatype.html#qRegisterMet..., если интересно, как устроено у пацанов.
Оставить комментарий
Имя или ник:
Комментарий: