Re: Корректное и удобное использование указателей и ссылок.
От: Нахлобуч Великобритания https://hglabhq.com
Дата: 19.07.05 08:28
Оценка:
Здравствуйте, Andreev, Вы писали:

A>У меня возникли сомнения: в своем проекте, который, должен возвращать по текущей позиции указателя на экране элемент, написал следующий код:


...
A>  CElement&  get_element( int x, int y )
A>  {
A>    //if ( x + length > owner->width() ) return false;
A>    for ( int i = 0; i < count(); i++ )
A>    {
A>      if ( elements[i]->y == y && elements[i]->x <= x && elements[i]->x + elements[i]->width > x ) return *elements[i];
A>    }
A>    return *((CElement*)NULL);A> // Руки обрывать!
}

A>  CElement& operator [] ( int index )
A>  {
A>    if ( index == -1 ) return *((CElement*)NULL); // Аналогично
A>    else return *elements[index];
A>  };
A>  std::vector<CElement*> elements; // Опасно, но не критично
A>};


A>????????????????????????

A>Вопрос сводится к вызову метода get_element и оператора [] в классе CScreen. Красиво ли будет выглядеть код:
A>????????????????????????

A>CScreen& s = get_current_screen();
A>CElement& e = s.get_element( m_caret_pos.x, m_caret_pos.y );
A>if ( &e && e.type() == EL_TEXT ) // Coding Guidelines: Never Switch on Type
A>{
A>  . . .
A>}


A>Спасибо за внимание.

A> Критикуйте. (-:

HgLab: Mercurial Server and Repository Management for Windows
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.