перекрестные ссылки - страница 4

 

Поясню, зачем две перегрузки, вдруг в СБ поправят. При наличии двух перегрузок, в перегрузке со ссылкой на объект будет отсутствовать оверхед на проверку дескриптора (не нужна она становится), объект-то всегда валидный.

Как-то так это должно выглядеть.

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;
  }