Привет.
Есть у меня список указателей на обьекты.
class Object{...};
list<Object*> list_of_object;//Типа коллекция обьектов...
Object object1;
Object object2;
....
Object objectN;
list_of_object.insert(&object1);
list_of_object.insert(&object2);
...
list_of_object.insert(&objectN);
Вопрос: Можно ли использовать значение указателя, как уникальный ключ?
Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...
Здравствуйте, <Аноним>, Вы писали:
А>Вопрос: Можно ли использовать значение указателя, как уникальный ключ?
Если время жизни указателя не превосходит время жизни объекта — то можно.
А>Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...
По указателю не могут быть несколько объектов
Может быть мусор (висячий указатель).
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, Аноним, Вы писали:
А>Привет.
А>Есть у меня список указателей на обьекты.
А>А>class Object{...};
А>list<Object*> list_of_object;//Типа коллекция обьектов...
А>Object object1;
А>Object object2;
А>....
А>Object objectN;
А>list_of_object.insert(&object1);
А>list_of_object.insert(&object2);
А>...
А>list_of_object.insert(&objectN);
А>
А>Вопрос: Можно ли использовать значение указателя, как уникальный ключ?
А>Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...
Я думаю можно, примером может служить мехнизм связывание Advise Unadvise- реализация ATL. Истчоник события содержит вектор интерфейсов, при связывании он вохвращает token который сам по себе и является адрессом интрефейса, добавленного в вектор. И этот токен служит для выборки интрефейса из вектора.
Здравствуйте, <Аноним>, Вы писали:
А>Вопрос: Можно ли использовать значение указателя, как уникальный ключ?
А>Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...
Фундаментальное свойство каждого объекта в с++ — уникальный identity — его адрес.
Здравствуйте, Аноним, Вы писали:
А>Привет.
А>Есть у меня список указателей на обьекты.
А>А>class Object{...};
А>list<Object*> list_of_object;//Типа коллекция обьектов...
А>Object object1;
А>Object object2;
А>....
А>Object objectN;
А>list_of_object.insert(&object1);
А>list_of_object.insert(&object2);
А>...
А>list_of_object.insert(&objectN);
А>
Лишь бы время жизни object1 — objectN было не меньше времени жизни list_of_object.
Здравствуйте, MaximE, Вы писали:
ME>Фундаментальное свойство каждого объекта в с++ — уникальный identity — его адрес.
Если не ошибаюсь, именно в связи с этим размер полного объекта — экземпляра пустого класса равен 1.
... << RSDN@Home 1.0 beta 6a >>
Здравствуйте, Михаил Можаев, Вы писали:
ММ>Здравствуйте, MaximE, Вы писали:
ME>>Фундаментальное свойство каждого объекта в с++ — уникальный identity — его адрес.
ММ>Если не ошибаюсь, именно в связи с этим размер полного объекта — экземпляра пустого класса равен 1.
Да. И то, что в стандартном с++ runtime не будет двигать объекты по памяти (как в java).
Здравствуйте, MaximE, Вы писали:
ME>Да. И то, что в стандартном с++ runtime не будет двигать объекты по памяти (как в java).
А не все ли равно. Главное, чтобы связка указатель-объект всегда оставалась правильной.
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>