Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 [2]  Все   Вниз
  Печать  
Автор Тема: STL. Приведение итератора к void*. Возможно ли?  (Прочитано 36968 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #30 : 20-06-2008 05:29 » new

RXL, про уничтожение понятно, но можно же TObject хранить, где-то еще(в векторе) и они сами разрушутся при разрушении хранилища или передать вледение тому объекту куда ты сохраняешь TObject
очень жаль, что хранится TObject, а не например std::auto_ptr<TObject>

А вот насчет индетификаторов не соглашусь.

например(забыл уже как там ичего в BCB поэтому наброском):
Код:
template <typename T>
class KeyHolder: TObject
{
public:
     T key_;
}

try
{
KeyHolder * keyHld = dynamic_cast<KeyHolder<std::string> >guiObj->GetObj(); // ну или реинтерпрет
}
catch(...)
{
   какая-то хрень
}

if(keyHld)
{
   iterator i = myMap->find(keyHld->key);
   if (i == myMap.end() )
       throw std::runtime_error("какой-то карявый ключ, где-то на лажали")
}

естественно не обязательно KeyHolder должен быть инициализирован типом ключа, можно типом структуры которую ты будешь искать по ключу(так даже правильней), сделать общий для всех с ключем int для некоторых переопределить для другого ключа.
Записан

Странно всё это....
Страниц: 1 [2]  Все   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines