Access Friend Functions Defined in Class
In C , friend functions are declared within classes but can access private and protected members of the class. Consider the following code snippet:
<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>
Accessing the fun(A) function works fine as it has a parameter of type A, allowing Argument-Dependent Lookup to locate it. However, there is an issue with accessing the global functions fun2() and fun3().
The declaration of fun2 within the class makes it a friend function but does not declare it in the global scope. Consequently, when accessing fun2() outside the class:
To resolve this, the correct approach is to define all friend functions outside the class and make them explicit friends of the class:
<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>
Defining friend functions this way allows them to be accessed both inside and outside the class.
The above is the detailed content of How to Access Friend Functions Defined in a Class in C ?. For more information, please follow other related articles on the PHP Chinese website!