Простая реализация RTTI (run time type information) (комментарии)
| Sergey Makeev | Постоялец | www | 29 дек. 2009 | 2:48 | #0 |
|---|
Это сообщение сгенерировано автоматически.
| Pushkoff | Участник | www | 29 дек. 2009 | 2:48 | #1 |
|---|
| Sergey Makeev | Постоялец | www | 29 дек. 2009 | 13:07 | #2 |
|---|
> По моему, метод Is(const char*) надо сделать виртуальным и константным...
ох, как же я это писал давно :)
| Pushkoff | Участник | www | 29 дек. 2009 | 13:20 | #3 |
|---|
| Sergey Makeev | Постоялец | www | 29 дек. 2009 | 13:25 | #4 |
|---|
А как посмотреть ? Я в подсказках искать не умею :) Просто глазами не нашел, дашь ссылку ?
| Nikopol | Модератор | www | 29 дек. 2009 | 14:05 | #6 |
|---|
> я вчера в подсказки выложил свой вариант, но без рефлекшена...
> ее еще не опубликовали...
В неопубликованных нет ни одной от тебя.
Ты наверно что-то не то нажал.
| wat | Ведущий | www | 29 дек. 2009 | 15:28 | #8 |
|---|
Ты просто не всё видишь. Не та ссылка у тебя. В приват смотри.
| ud1 | Постоялец | www | 29 дек. 2009 | 19:29 | #10 |
|---|
> А почему только для участников? :(
Действительно, к чему сделаны все эти ограничения? Я считаю, что статусы должны помогать, а не создавать ограничения. А так тогда еще и оплату введите: чтобы стать участником на один месяц, отправьте смс на номер ***, стоимость услуги 150 руб.
| JokerR | Постоялец | www | 29 дек. 2009 | 19:36 | #11 |
|---|
бугак, давно уже:
http://www.gamedev.ru/help/donate
>В примечании укажите свои данные, например, id вашей регистрации на сайте и ник, чтобы мы могли выдать Вам статус участника развития ресурса GameDev.ru в эквиваленте 15 WMZ за каждый год.
| opengl_extensions | Постоялец | www | 30 дек. 2009 | 12:09 | #12 |
|---|
замени названия классов 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 . . .
| opengl_extensions | Постоялец | www | 30 дек. 2009 | 12:10 | #13 |
|---|
Последняя правка: 30 дек. 2009 12:29
| Sergey Makeev | Постоялец | www | 30 дек. 2009 | 12:58 | #14 |
|---|
> мда уж - синтетика в тестах так и прет
>
> замени названия классов 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/ Форум / Программирование игр / Общее
Для определения, можете ли вы оставлять сообщения, необходимо войти в систему под своим логином.