struct A
{
public:
friendclass B;
private:
int A_;
};
struct B
{
void ModifyA( A &A_ )
{
A_.A_ = 0;
}
};
struct C
{
void ModifyA( A &A_ )
{
A_.A_ = 0; // Error!
}
};
int main( )
{
A A_;
B B_;
C C_;
B_.ModifyA( A_ ); // OK
C_.ModifyA( A_ ); // Not OK
}