修改类protected成员的方法
今天做CBitmap的动态换肤的时候有下面的收获。记下来
现有类A及其对象a。
class A
{
protected:
int x = 10;
};
A a;
如果改变a中x的值。
直接a.x = 11当然不行。
达到修改a中x的值为11的做法是
class B : public A
{
A* pa = null;
B(A *a)
{pa = a;}
inline void setX()
{
*(int *)(pa + &x - this) = 11;
}
};
使用内联函数提高效率
现有类A及其对象a。
class A
{
protected:
int x = 10;
};
A a;
如果改变a中x的值。
直接a.x = 11当然不行。
达到修改a中x的值为11的做法是
class B : public A
{
A* pa = null;
B(A *a)
{pa = a;}
inline void setX()
{
*(int *)(pa + &x - this) = 11;
}
};
使用内联函数提高效率