首页 >后端开发 >C++ >如何在 C 中将模板化结构或类声明为友元?

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-09 08:49:021019浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn