постоянный доступ и неконстантный доступ - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть класс, который внутренне владеет вектором foo

class bar {
  private:
    vector<Foo> foos_;
}

Теперь я хочу создать публичный доступ к этому вектору.Я имею в виду две версии функции:

Foo& getFoo(int index) {
  // first do size checking, return ref
  return foos[index];
}

и

const Foo& getFoo(int index) const {
  // first do size checking, return const reference
  return foos[index];
}

Есть ли недостатки этого подхода?Одним очевидным недостатком является то, что я копирую почти идентичный код просто дважды.Есть ли лучший способ сделать это?

----- edit ----- второй аксессор забывает const, обновлено

1 Ответ

0 голосов
/ 24 ноября 2018

Наличие как константных, так и неконстантных методов доступа довольно распространено в C ++.Не существует языковой функции для объединения кода для обоих - вам действительно нужно написать его дважды.

Кстати, вам не нужно проверять границы самостоятельно, вместо этого вы можете использовать foos_.at(index)из foos_[index], и тогда у вас будет автоматическая проверка границ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...