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 для некоторых переопределить для другого ключа.