将模板化结构或类声明为友元
在 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中文网其他相关文章!