在 C 领域,将模板化结构或类声明为友元可能会出现与语法相关的障碍。要实现此目的,请考虑以下方法:
templatestruct foo { template friend class foo; private: // ... };
此语法似乎编译成功。但是,它将 foo 的所有模板实例声明为彼此的友元,无论它们采用什么模板参数。这可能符合或可能不符合您的预期用例。
如果您需要将友谊限制为仅特定实例,您可以使用以下语法来实现此目的:
templatestruct foo { template friend struct foo ; private: // ... };
不幸的是,此语法不允许包含 foo 的所有可能实例化的通用声明。
因此,如果您的目标是在 foo 的所有模板实例化之间建立友谊,考虑到 C 语法的限制,使用友元类 foo 的第二种方法是最接近的。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3