首页 > 后端开发 > C++ > 正文

如何在 C 中将模板化结构或类声明为友元?

Mary-Kate Olsen
发布: 2024-11-09 08:49:02
原创
968 人浏览过

How to Declare a Templated Struct or Class as a Friend in C  ?

将模板化结构或类声明为友元

在 C 编程中,可以将模板化结构或类声明为友元到另一个类,有效地允许访问私有成员。但是,某些编译器(例如 VC8)在实现此功能时可能会遇到错误。

不正确的语法:

以下代码尝试将模板化 struct foo 声明为foo 的所有其他实例的朋友:

template <typename T>
struct foo
{
    template <typename S>
    friend struct foo<S>;

   private:
    // ...
};
登录后复制

但是,这将导致错误:

error C3857: 'foo<T>': multiple template parameter lists are not allowed
登录后复制

正确语法:

要正确地将模板化结构或类声明为友元,请使用以下语法:

template <typename> friend class foo;
登录后复制

这将允许 foo 的所有模板实例根据需要彼此成为友元。因此,正确的代码应该是:

template <typename T>
struct foo
{
   template <typename>
   friend class foo;

   private:
    // ...
};
登录后复制

以上是如何在 C 中将模板化结构或类声明为友元?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板