Поясню, зачем две перегрузки, вдруг в СБ поправят. При наличии двух перегрузок, в перегрузке со ссылкой на объект будет отсутствовать оверхед на проверку дескриптора (не нужна она становится), объект-то всегда валидный.
Как-то так это должно выглядеть.
int CArrayObj::Search(const CObject &element) const{
return _Search(&element);
}
int CArrayObj::Search(const CObject* const element) const{
return !m_data_total||CheckPointer(element)==POINTER_INVALID||m_sort_mode==-1?-1:_Search(element);
}
int CArrayObj::_Search(const CObject* const element) const
{
int pos=QuickSearch(element);
return m_data[pos].Compare(element,m_sort_mode)==0?pos:-1;
}
Поясню, зачем две перегрузки, вдруг в СБ поправят. При наличии двух перегрузок, в перегрузке со ссылкой на объект будет отсутствовать оверхед на проверку дескриптора (не нужна она становится), объект-то всегда валидный.
Как-то так это должно выглядеть.