Предположим, у меня есть два контейнера элементов:
std::vector<std::string> foo = { "aa", "bb", "cc" };
std::vector<std::string> bar = { "dd", "ee" };
Я передаю неопределенности в foo
и bar
между многими классами, которые работают с этими двумя контейнерами. Тем не менее, я обнаружил, что должен быть очень осторожным, чтобы не перепутать, какие индексы связаны с каким контейнером, и иногда терпеть неудачу в этом, а затем иметь много проблем с поиском логических ошибок, которые приводят.
Итак, предположим, у меня есть два значения:
int id_foo = 1;
int id_bar = 0;
Существует ли простой шаблон проектирования, который помогает предотвратить случаи, когда я пытаюсь вызвать bar[id_foo]
путем "привязки" id_foo
к foo
.
По сути, я пытаюсь найти самый простой способ устранения неоднозначности между foo
и bar
. Я мог бы создать отдельные классы для каждого, а затем просто определить итераторы для этих классов. Но я хотел бы избежать создания отдельного класса для каждого контейнера, такого как foo
и bar
, для которого я хочу эту «безопасность».
Вопрос задает что-то вроде «индекс безопасности» (аналог безопасности типа). В настоящее время я выполняю это, называя мои индексы таким образом, чтобы указать, с каким контейнером они связаны.