mercredi 25 février 2015

some friend functions don't follow the rule


For the following snippet:



class A{
friend void f(){};
public:
A(){f();} //error
};

class B{
friend void f(void* ptr){};
public:
B(){f(this);} //no error
};


According to the rule that although friend functions can be defined inside a class, yet they are not visible until they are declared somewhere outside the class scope, the error in the definition of class A is explained.

But I am confused why the snippet for class B doesn't produce the same error as class A's.


Please can anyone tell me about this?




Aucun commentaire:

Enregistrer un commentaire