Может ли класс добавить классы друзей во время выполнения в C ++? - PullRequest
0 голосов
/ 02 ноября 2018

Я бы хотел, чтобы некоторые классы стали друзьями других классов во время выполнения. Есть ли способ сделать это?

В качестве альтернативы, есть ли способ получить доступ к общедоступным / защищенным / приватным ivars объекта во время выполнения или расширить класс, аналогичный функции категории Objective-C?

В данном случае я хотел бы предоставить тестовому набору доступ к ivars в классах во время выполнения, но без загрязнения кода приложения специальным кодом тестового набора. Тестовая структура может измениться и будет отличаться в зависимости от платформы развертывания.

Резюме: найдите способ сохранить код приложения чистым и свободным от внешних артефактов.

1 Ответ

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

Я бы хотел, чтобы некоторые классы стали друзьями других классов во время выполнения. Есть ли способ сделать это?

Нет, это невозможно с c ++.

В качестве альтернативы, есть ли способ получить доступ к общедоступным / защищенным / приватным ivars объекта во время выполнения

Также нет концепции изменения видимости членов класса во время выполнения.

Модификаторы доступа - это чистые понятия времени компиляции, изменить их во время выполнения невозможно.


Способом преодоления этого для вас конкретного варианта использования может быть использование интерфейсов, как я здесь набросал:

...