Углубление шаблонов классов с друзьями классов шаблонов
При определении класса двоичного дерева (BT) и класса его элементов (BE) необходимо установить дружеские отношения, чтобы BT мог получить доступ к частным участникам BE. Однако очень важно понимать основную механику, чтобы правильно определить отношения.
Изначально вы пытались объявить дружеские отношения как шаблон дружественный класс BT. Но этот синтаксис приводит к конфликту имен с параметром шаблона BE. Параметры шаблона во вложенных шаблонах должны иметь разные имена.
Вместо этого следует использовать разные имена параметров шаблона, например:
templateclass BE { template friend class BT; };
Это объявление указывает, что любой класс BT, независимо от его аргументов шаблона, является другом всех классов BE с соответствующими аргументами шаблона.
Рассмотрите следующие примеры для дальнейшего пояснения различных типов. дружеских отношений:
templatestruct foo { template friend class bar; };
В этом случае bar является другом foo независимо от аргументов шаблона bar. Любая специализация bar будет дружественной любой специализации foo.
templatestruct foo { friend class bar ; };
Здесь bar является другом foo только в том случае, если его аргумент шаблона соответствует аргументу foo. Таким образом, только bar
В вашем конкретном сценарии дружественный класс bar
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3