J
JH Trauntvein
Consider the following example:
namespace n1
{
class cn1_base;
namespace n1_helpers
{
class helper1
{
private:
int private_member;
friend class cn1_base;
};
};
class cn1_base
{
public:
void foo()
{
n1_helpers::helper1 helper;
helper.private_member = 1;
}
};
};
While this compiled with earlier versions of G++, G++ version 4.x fails
to compile this and gives the following message:
'int n1::n1_helpers::helper1:rivate_member' is prviate within this
context
Fortunately, I can work around this by changing the friend declaration
to the following:
friend class n1::n1_base;
Is this a bug in the compiler or have I misunderstood something about
friendship declarations?
Regards,
Jon Trauntvein
namespace n1
{
class cn1_base;
namespace n1_helpers
{
class helper1
{
private:
int private_member;
friend class cn1_base;
};
};
class cn1_base
{
public:
void foo()
{
n1_helpers::helper1 helper;
helper.private_member = 1;
}
};
};
While this compiled with earlier versions of G++, G++ version 4.x fails
to compile this and gives the following message:
'int n1::n1_helpers::helper1:rivate_member' is prviate within this
context
Fortunately, I can work around this by changing the friend declaration
to the following:
friend class n1::n1_base;
Is this a bug in the compiler or have I misunderstood something about
friendship declarations?
Regards,
Jon Trauntvein