Хак ли?
От: _defrager Россия  
Дата: 21.09.04 12:22
Оценка:
Нужно добраться до 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 вроде как жалуется.
Насколько "законно" так делать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.