Я хотел бы, чтобы некоторые классы стали друзьями других классов во время выполнения. Есть ли способ сделать это?
В качестве альтернативы, есть ли способ получить доступ к общедоступным / защищенным / приватным ivars объекта во время выполнения или расширить класс, аналогичный функции категории Objective-C?
В данном случае я хотел бы иметь возможность предоставить тестовому набору доступ к ivars в классах во время выполнения, но без загрязнения кода приложения специальным кодом тестового набора. Тестовая структура может измениться и будет отличаться в зависимости от платформы развертывания.
Описание: найдите способ сохранить код приложения чистым и свободным от внешних артефактов.
Я хотел бы, чтобы некоторые классы стали друзьями других классов во время выполнения. Есть ли способ сделать это?
Нет, это невозможно с C ++.
В качестве альтернативы, есть ли способ получить доступ к общедоступным / защищенным / приватным ivars объекта во время выполнения
Также нет концепции изменения видимости членов класса во время выполнения.
Модификаторы доступа — это чистые понятия времени компиляции, во время выполнения их невозможно изменить.
Способом преодоления этого для вас конкретного варианта использования может быть использование интерфейсов, как я делал наброски здесь:
Других решений пока нет …