Указатели...?
От: Аноним  
Дата: 30.04.03 11:28
Оценка:
Привет.

Есть у меня список указателей на обьекты.

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);


Вопрос: Можно ли использовать значение указателя, как уникальный ключ?
Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...
Re: Указатели...?
От: Кодт Россия  
Дата: 30.04.03 11:36
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Вопрос: Можно ли использовать значение указателя, как уникальный ключ?


Если время жизни указателя не превосходит время жизни объекта — то можно.

А>Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...


По указателю не могут быть несколько объектов
Может быть мусор (висячий указатель).
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
Re: Указатели...?
От: slonnik  
Дата: 30.04.03 13:28
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет.


А>Есть у меня список указателей на обьекты.


А>
А>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 который сам по себе и является адрессом интрефейса, добавленного в вектор. И этот токен служит для выборки интрефейса из вектора.
Re: Указатели...?
От: MaximE Великобритания  
Дата: 30.04.03 15:13
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Вопрос: Можно ли использовать значение указателя, как уникальный ключ?

А>Мне нужна гарантия того что я однозначно смогу найти по указателю обьект тот что мне нужен и удалить его из списка например, а затем и сам обьект ...

Фундаментальное свойство каждого объекта в с++ — уникальный identity — его адрес.
Re: Указатели...?
От: Bell Россия  
Дата: 30.04.03 15:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Привет.


А>Есть у меня список указателей на обьекты.


А>
А>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.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Указатели...?
От: Михаил Можаев Россия www.mozhay.chat.ru
Дата: 30.04.03 15:27
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Фундаментальное свойство каждого объекта в с++ — уникальный identity — его адрес.


Если не ошибаюсь, именно в связи с этим размер полного объекта — экземпляра пустого класса равен 1.
... << RSDN@Home 1.0 beta 6a >>
Re[3]: Указатели...?
От: MaximE Великобритания  
Дата: 30.04.03 15:31
Оценка:
Здравствуйте, Михаил Можаев, Вы писали:

ММ>Здравствуйте, MaximE, Вы писали:


ME>>Фундаментальное свойство каждого объекта в с++ — уникальный identity — его адрес.


ММ>Если не ошибаюсь, именно в связи с этим размер полного объекта — экземпляра пустого класса равен 1.


Да. И то, что в стандартном с++ runtime не будет двигать объекты по памяти (как в java).
Re[4]: Указатели...?
От: Кодт Россия  
Дата: 30.04.03 15:42
Оценка:
Здравствуйте, MaximE, Вы писали:

ME>Да. И то, что в стандартном с++ runtime не будет двигать объекты по памяти (как в java).


А не все ли равно. Главное, чтобы связка указатель-объект всегда оставалась правильной.
(=^.^=) Neko ... << RSDN@Home 1.0 beta 6a >>
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.