История изменений
Исправление eao197, (текущая версия) :
А что там должно быть?
Нормальный код хотя бы. А уж с тем апломбом, с которым вы про свои «умения» рассказываете, то хороший. Но нет.
Куча шаблонной магии, STL, и так далее?
Вы не имеете не малейшего представления ни о чем из этого, не надо бросаться страшными словами, смысла которых не понимаете.
то весь крестовый маразм, от ссылок и шаблонов до исключений, надо свести к минимуму
Ну а это тогда что такое?
std::string rn(bd.Name);
ResourceVar* rv = NULL;
if(rm->find(rn) != rm->end())
rv = rm->at(rn);
У вас же rm – это std::map, а метод std::map::at бросает исключения. И это в функции, которая возвращает HRESULT.
При этом сам по себе этот фрагмент заслуживает того, чтобы надавать вам по мордасам на код-ревью. Ибо у вас уже есть валидный итератор, но вы повторно делаете поиск по map-у.
Да и объект rn нет смысла сохранять до конца функции. Достаточно было сделать что-то вида:
ResourceMap::iterator it = rm->find(std::string(bd.Name));
if(it != rm->end())
rv = it->second;
Ну и еще вот эти вот повторяющиеся фрагментики:
HRESULT hr;
if(!name)
return E_POINTER;
std::string rn(name);
ResourceMap::iterator it = _samplers.find(rn);
if(it == _samplers.end())
return E_INVALIDARG;
ResourceVar *rv = it->second;
многое говорят о вас, как о программисте.
Исходная версия eao197, :
А что там должно быть?
Нормальный код хотя бы. А уж с тем апломбом, с которым вы про свои «умения» рассказываете, то хороший. Но нет.
Куча шаблонной магии, STL, и так далее?
Вы не имеете не малейшего представления ни о чем из этого, не надо бросаться страшными словами, смысла которых не понимаете.
то весь крестовый маразм, от ссылок и шаблонов до исключений, надо свести к минимуму
Ну а это тогда что такое?
std::string rn(bd.Name);
ResourceVar* rv = NULL;
if(rm->find(rn) != rm->end())
rv = rm->at(rn);
У вас же rm – это std::map, а метод std::map::at бросает исключения. И это в функции, которая возвращает HRESULT.
При этом сам по себе этот фрагмент заслуживает того, чтобы надавать вам по мордасам на код-ревью. Ибо у вас уже есть валидный итератор, но вы повторно делаете поиск по map-у.
Да и объект rn нет смысла сохранять до конца функции. Достаточно было сделать что-то вида:
ResourceMap::iterator it = rm->find(std::string(bd.Name));
if(it = rm->end())
rv = it->second;
Ну и еще вот эти вот повторяющиеся фрагментики:
HRESULT hr;
if(!name)
return E_POINTER;
std::string rn(name);
ResourceMap::iterator it = _samplers.find(rn);
if(it == _samplers.end())
return E_INVALIDARG;
ResourceVar *rv = it->second;
многое говорят о вас, как о программисте.