访问类中定义的友元函数
在 C 中,友元函数在类内声明,但可以访问类的私有和受保护成员。考虑以下代码片段:
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun3() { std::cout << "I'm here3" << std::endl; }</code>
访问 fun(A) 函数可以正常工作,因为它有一个 A 类型的参数,允许参数依赖查找找到它。但是,访问全局函数 fun2() 和 fun3() 时存在问题。
类内声明 fun2 使其成为友元函数,但未在全局范围内声明它。因此,在类外访问 fun2() 时:
要解决此问题,正确的方法是在类外部定义所有友元函数,并使它们成为该类的显式友元:
<code class="cpp">class A { friend void fun(A a); friend void fun2(); friend void fun3(); }; void fun(A a) { std::cout << "I'm here" << std::endl; } void fun2() { std::cout << "I'm here2" << std::endl; } void fun3();</code>
定义这种方式的friend函数允许在类内部和外部访问它们。
以上是如何访问 C 类中定义的友元函数?的详细内容。更多信息请关注PHP中文网其他相关文章!