user2953119
user2953119

Reputation:

Friend function scope and point of declaration

I've written the simple program:

#include <stdio.h>

class A
{
    friend void foo() { printf("asd\n"); }
};

int main()
{
    A::foo();//fail, foo is not a member of A
}

How can I invoke this friend function defined inside the class body? Also I would like to know what is the point of declaration and scope of friend function.

Upvotes: 1

Views: 99

Answers (1)

πάντα ῥεῖ
πάντα ῥεῖ

Reputation: 1

First of all to declare a friend function do

class A
{
    friend void foo();
};

and define the function outside of the class

void foo { printf("asd\n"); }

It will be called as any other normal function

int main() {
    foo();
}

The point is, that the friend declaration in class A allows foo() access to any internal (private or protected) members of this class.

To additionally clarify: It is possible to define the function body at the point of the friend declaration, but it's still to be called as shown.

Upvotes: 1

Related Questions