всем привет, помогите пожалуйста!
у меня есть класс myclass. его экземпляры динамически создаются и удаляются в процессе работы программы.
доступ к экземлярам осуществляется через указатели, которые хранятся в векторе.
vector <myclass *> vec1;
vec1.push_back(new myclass());
в ходе работы любой объект из vec1 может быть удален. А нужно ли строго соблюдать порядок удаления ?? т.е. vec1[0] будет удален позже чем vec1[1];
Здравствуйте, Аноним, Вы писали:
А>в ходе работы любой объект из vec1 может быть удален. А нужно ли строго соблюдать порядок удаления ?? т.е. vec1[0] будет удален позже чем vec1[1];
Здравствуйте, Аноним, Вы писали:
А>всем привет, помогите пожалуйста! А>у меня есть класс myclass. его экземпляры динамически создаются и удаляются в процессе работы программы. А>доступ к экземлярам осуществляется через указатели, которые хранятся в векторе. А>vector <myclass *> vec1; А>vec1.push_back(new myclass());
А>в ходе работы любой объект из vec1 может быть удален. А нужно ли строго соблюдать порядок удаления ?? т.е. vec1[0] будет удален позже чем vec1[1];
Почему бы не использовать вместо голых указателей умные? Это могло бы избавить как от вопросов о порядке удаления, так и от забот о самом удалении.
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, rg45, Вы писали:
R>Почему бы не использовать вместо голых указателей умные? Это могло бы избавить как от вопросов о порядке удаления, так и от забот о самом удалении.
Ну, не скажи.
Хотя топикстартера эти вопросы ЕЩЁ не занимают, но проблемы с недетерминированным порядком удаления управляемых объектов очень даже реальны.
Это хорошо, если логические связи между объектами представлены умными указателями между ними. Тогда, в худшем случае, мы просто поймаем кольцевую зависимость, и придумаем способ её разорвать.
Примеры неочевидных логических связей: сервис, зарегистрированный и доступный по имени; окно или виджет — обработчик сообщения, сигнала, события; поток-производитель или потребитель данных из очереди.
А также разнообразные синглетоны...
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, rg45, Вы писали:
R>>Почему бы не использовать вместо голых указателей умные? Это могло бы избавить как от вопросов о порядке удаления, так и от забот о самом удалении.
К>Ну, не скажи. К>Хотя топикстартера эти вопросы ЕЩЁ не занимают, но проблемы с недетерминированным порядком удаления управляемых объектов очень даже реальны. К>Это хорошо, если логические связи между объектами представлены умными указателями между ними. Тогда, в худшем случае, мы просто поймаем кольцевую зависимость, и придумаем способ её разорвать. К>Примеры неочевидных логических связей: сервис, зарегистрированный и доступный по имени; окно или виджет — обработчик сообщения, сигнала, события; поток-производитель или потребитель данных из очереди. К>А также разнообразные синглетоны...
Да-да, я все это понимаю, потому и употребил осторожную формулировку "могло бы..." (в каких-то не очень сложных случаях).
--
Не можешь достичь желаемого — пожелай достигнутого.
Здравствуйте, Аноним, Вы писали:
А>в ходе работы любой объект из vec1 может быть удален. А нужно ли строго соблюдать порядок удаления ?? т.е. vec1[0] будет удален позже чем vec1[1];
Я думаю, что книжка по С++, прочитанная, а не просто пролистанная, сразу ответит на 99% подобных вопросов. Подойдёт любой самоучитель, хотя я лично рекомендую книжку от автора языка — Бьерна Страуструпа: "Язык программирования С++".