Давайте посмотрим на упрощенный пример:
int a = 0;
int &b = a;
int c = b;
c = 123;
Изменится ли последнее назначение a
? Конечно, нет. Не имеет значения, как вы передаете значение в c
по ссылке или нет c
является полностью независимой переменной, которая только что инициализирована ссылкой.
Ваш случай такой же - m_dltable
- это отдельная переменная, а факт, что вы инициализируете его с помощью ссылки, ничего не меняет. (Ваш случай еще хуже, вы не инициализировали его по ссылке, вы присвоили его)
В целом ваш подход неверен. Если вы хотите напрямую получить доступ к этой переменной, просто сделайте ее доступной c, не пытайтесь создавать изощренные обходные пути для доступа к ней. Если вы хотите инкапсуляцию, просто создайте элементы, которые позволяют перебирать этот контейнер. Например, вернуть константную ссылку на него или иметь begin()
и end()
методы, которые возвращают (const) итераторы соответственно.