Нужно добраться до private member класса. VC5/6/7/7.1/8 позволяет сделать
class ClassWithPrivateMember
{
protected:
int m_a;
};
class ClassNeedModifyPrivateMember
{
public:
void Modify(ClassWithPrivateMember* a)
{
class Friend : public ClassWithPrivateMember
{
friend ClassNeedModifyPrivateMember;
};
((Friend*)a)->m_a = 5;
}
};
int main(int argc, char* argv[])
{
ClassWithPrivateMember a;
ClassNeedModifyPrivateMember b;
b.Modify(&a);
return 0;
}
Intel C compiler вроде как жалуется.
Насколько "законно" так делать?