«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как объявить шаблонные структуры/классы друзьями в C++?

Как объявить шаблонные структуры/классы друзьями в C++?

Опубликовано 19 ноября 2024 г.
Просматривать:961

How Can You Declare Templated Structs/Classes as Friends in C  ?

Объявление шаблонных структур/классов как друзей

В области C объявление шаблонных структур или классов как друзей может стать препятствием, связанным с синтаксисом. Чтобы добиться этого, рассмотрите следующий подход:

template 
struct foo
{
    template 
    friend class foo;

private:
    // ...
};

Похоже, этот синтаксис компилируется успешно. Однако он объявляет все экземпляры шаблона foo друзьями друг друга, независимо от принимаемого ими параметра шаблона. Это может совпадать, а может и не совпадать с вашим предполагаемым вариантом использования.

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

template 
struct foo
{
    template 
    friend struct foo;

private:
    // ...
};

К сожалению, этот синтаксис не позволяет использовать общее объявление, включающее все возможные экземпляры foo.

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

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3