Простая реализация RTTI (run time type information) (комментарии)
Это сообщение сгенерировано автоматически.
По моему, метод Is(const char*) надо сделать виртуальным и константным...
Pushkoff
> По моему, метод Is(const char*) надо сделать виртуальным и константным...
ох, как же я это писал давно :)
я вчера в подсказки выложил свой вариант, но без рефлекшена...
Pushkoff
А как посмотреть ? Я в подсказках искать не умею :) Просто глазами не нашел, дашь ссылку ?
ее еще не опубликовали...
Pushkoff
> я вчера в подсказки выложил свой вариант, но без рефлекшена...
> ее еще не опубликовали...
В неопубликованных нет ни одной от тебя.
Ты наверно что-то не то нажал.
Nikopol
ну сегодня вечером попробую еще раз...
Nikopol
Ты просто не всё видишь. Не та ссылка у тебя. В приват смотри.
А почему только для участников? :(
MarkoPolo
> А почему только для участников? :(
Действительно, к чему сделаны все эти ограничения? Я считаю, что статусы должны помогать, а не создавать ограничения. А так тогда еще и оплату введите: чтобы стать участником на один месяц, отправьте смс на номер ***, стоимость услуги 150 руб.
ud1
бугак, давно уже:
http://www.gamedev.ru/help/donate
>В примечании укажите свои данные, например, id вашей регистрации на сайте и ник, чтобы мы могли выдать Вам статус участника развития ресурса GameDev.ru в эквиваленте 15 WMZ за каждый год.
мда уж - синтетика в тестах так и прет
замени названия классов foo -> foofoofoofoofoofoo , foo2 -> foo2foo2foo2foo2foo2
короче сделай подлиннее и получим:
foo3::typeClassName = 'foo3foo3foo3foo3foo3foo3' foo created by name = 0x00032FC0, have className = 'foofoofoofoofoofoofoofoo' className from base pointer = 'foo2foo2foo2foo2foo2foo2' Reflection database content: ----------------------------------------------- class name : 'foo3foo3foo3foo3foo3foo3' attr name:'foo3-attr int test', type 'int', inherited 0 attr name:'foo-attr float test', type 'float', inherited 1 attr name:'foo-attr int test', type 'int', inherited 1 class name : 'foofoofoofoofoofoofoofoo' attr name:'foo-attr float test', type 'float', inherited 0 attr name:'foo-attr int test', type 'int', inherited 0 class name : 'foo2foo2foo2foo2foo2foo2' attr name:'foo2-int_attribue', type 'int', inherited 0 Metadata from pointer ----------------------------------------------- attr name:'foo-attr float test', type [1] 'float' attr name:'foo-attr int test', type [2] 'int' Set all int attributes to 13 ----------------------------------------------- set to 'foo3-attr int test' set to 'foo-attr int test' Get all int attributes ----------------------------------------------- 'foo3-attr int test' = 13 'foo-attr int test' = 13 Speed compare: 60 000 000 dynamic cast ----------------------------------------------- dynamic_cast 16.70M casts per second reflection::cast 12.11M casts per second reflection::cast faster that dynamic_cast x0.73 Press any key to continue . . .
в дебаг сборке на 1000000 итераций отношение dynamic_cast / костыль с блэкджеком - 0.01 [ 12.82M / 0.14M ]
opengl_extensions
> мда уж - синтетика в тестах так и прет
>
> замени названия классов foo -> foofoofoofoofoofoo , foo2 -> foo2foo2foo2foo2foo2
а какой компилятор / проц ? у меня вот так получается:
на старом gcc (< 4) по идее может быть медленнее, т.к. на vc и gcc версии выше 3-шки, хеш строчек оптимизируется и считается весь в compile time, а на старых gcc в runtime.
вот, что получилось у меня:
Visual Studio 2005 version 8.0.50727.867 собрано в Release с /O2 процессор: AMD Athlon X2 3800+ =========================================== foo3::typeClassName = 'foo3foo3foo3foo3foo3foo3' foo created by name = 0x00B018F8, have className = 'foofoofoofoofoofoo' className from base pointer = 'foo2foo2foo2foo2foo2' Reflection database content: ----------------------------------------------- class name : 'foo3foo3foo3foo3foo3foo3' attr name:'foo3foo3foo3foo3foo3foo3-attr int test', type 'int', inherited 0 attr name:'foofoofoofoofoofoo-attr float test', type 'float', inherited 1 attr name:'foofoofoofoofoofoo-attr int test', type 'int', inherited 1 class name : 'foofoofoofoofoofoo' attr name:'foofoofoofoofoofoo-attr float test', type 'float', inherited 0 attr name:'foofoofoofoofoofoo-attr int test', type 'int', inherited 0 class name : 'foo2foo2foo2foo2foo2' attr name:'foo2foo2foo2foo2foo2-int_attribue', type 'int', inherited 0 Metadata from pointer ----------------------------------------------- attr name:'foofoofoofoofoofoo-attr float test', type [1] 'float' attr name:'foofoofoofoofoofoo-attr int test', type [2] 'int' Set all int attributes to 13 ----------------------------------------------- set to 'foo3foo3foo3foo3foo3foo3-attr int test' set to 'foofoofoofoofoofoo-attr int test' Get all int attributes ----------------------------------------------- 'foo3foo3foo3foo3foo3foo3-attr int test' = 13 'foofoofoofoofoofoo-attr int test' = 13 Speed compare: 60 000 000 dynamic cast ----------------------------------------------- dynamic_cast 10.04M casts per second reflection::cast 17.06M casts per second reflection::cast faster that dynamic_cast x1.70