Pokimon
> Бери адрес обьекта в памяти за ИД.
А потом еще и ABA problem заимеем.
RPGman
> А потом еще и ABA problem заимеем.
Пример?
Делал и с указателями и с id. Удобнее с указателями работать, сейвить удобно и так и едак, а вот сетка - надо бъ id.
Ghost2
> Пример?
Раз речь изначально шла об ID, а не о прямом доступе к объекту по указателю, то логично предположить, что есть контейнер объектов, и внешняя подсистема, которая ищет/запрашивает объект по его айдишнику.
Если использовать в качестве айдишника указатель, то может случиться, что старый объект будет удален, а новый сконструирован по тому же адресу. Объект по сути другой, а внешняя подсистема будет считать его тем же самым.
RPGman
Я про ABA в курсе, только это скорее к общей организации софта относится. Проблема может возникнуть в куче мест, и надо быть aware of it - это да.
Предлагаю __int64. Пока он переполнится, пройдёт очень много времени. Инфа 100%
alex19921992
> Предлагаю __int64
чтобы сохранить все возможные варианты ID размером 64 бит, необходимо 147 573 952 589 гигабайт. Не говоря уже об объектах, которым эти ID будут присваиваться.
int32 хватит за глаза.
странно, что никто не сказал про Guid а ое для таких целей и создавался, а если ID внутрений, то адрес объекта, как раз то что нуна.
a ex1 и b ex2 у тебя ГЛОБАЛЬНЫЕ? Тогда порядок их инициализации не определен. Более того. Я не уверен за порядок инициализации a::id0, ex1 и ex2. Т.е. например не может ли a::id0 инициализироваться после ex1, а не до обоих, как ты думаешь?
__uuidof() ?
Тема в архиве.