как связать два шаблонных класса в дружбе "многие ко многим"?

StackOverflow https://stackoverflow.com/questions/4846486

Вопрос

предположим, что у меня есть следующие два класса шаблонов:

родовое слово

как связать их дружбой "многие ко многим".например, добавление метода в First, который печатает b объекта параметра Second.

ясен ли мой вопрос?

Это было полезно?

Решение

родовое слово

Это позволит каждому сгенерированному кодовому тегу получить доступ к внутренним компонентам каждого сгенерированного кода кода.Теперь, когда это техническое решение, вы можете подумать, является ли проект с циклическими зависимостями и открытием внутреннего для любого экземпляра другого класса лучшим решением вашей конкретной проблемы.

Кстати, если вы хотите предоставить доступ к First<T> только к Second<U> (а не к First<int>), вы можете сделать это следующим образом:

родовое слово

В этой второй версии вам необходимо предварительное объявление шаблона Second<int> перед тем, как подружиться с конкретным экземпляром, но это позволяет вам предоставить доступ к внутренним компонентам класса только конкретному экземпляру.

Другие советы

Если вы понимаете, что такое защита, проблема в предварительном объявлении шаблонов:

родовое слово

Вы можете начать с объявления каждого класса:

родовое слово

И теперь оба класса будут знать о другом в своих определениях.При необходимости вы можете объявить их там друзьями.

родовое слово

и то же в обратном порядке.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top