Часто правильный подход к структуре заключается в уточнении семантики. Вам нужно задать такие вопросы, как
Msgstr "Является ли myObject вектором <>?" Ответ, вероятно, нет. Если вы затем следуете принципу, что класс делает одно (сплоченность), то из этого следует, что синтаксический сахар вокруг вектора <>, вероятно, не так хорош.
Из этого следует, что vector<>
является частным участником. Нет проблем с возвратом константной ссылки на него. Возврат неконстантной ссылки нарушил бы инкапсуляцию - это также могут быть публичные данные
Если вы хотите:
(myObject[i]).SomeOtherObjectMethod1();
тогда это достаточно просто реализовать через operator[](unsigned index)
. Я подозреваю, что если вы действительно хотите, чтобы вам было лучше быть последовательным и рассматривать myObject
как отдельный контейнер. Это означает, что не нужно предоставлять метод доступа const ref для vector<>
и реализовывать специальные методы доступа, которые вам действительно нужны. Это значительно облегчит понимание клиентского кода.