佚名通过本文主要向大家介绍了pthis,电流表指针偏转问题,鼠标指针出问题,指针赋值问题,鼠标指针出现问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于pThis指针的问题
描述:
解决方案1:
学习了. 解决方案2:
描述:
#define DECLARE_PTHIS(type, offset) type *pThis = (type*)((char*)this) - (long)&(((type*)0)->offset); 有什么作用
解决方案1:
学习了. 解决方案2:
这种宏常用于链表中,例如:
class NODE {
NODE* Last;
NODE* Next;
};
class TESTDATA {
// some data;
NODE Node;
};
程序中使用TESTDATA类建立链表,各节点之间通过Node成员来联系,即Node.Next表示下一节点中Node成员的地址,在NODE类的某个成员函数中如果要得到TESTDATA结构指针时,就可以使用这个宏来取得。
另外提一下,这种做法可读性较差,而且不方便使用,应使用派生类的方式替代,只是某些早期遗留下来的结构中仍采用这种方式。
(type*)((char*)this): 对象的起始地址;
(long)&(((type*)0)->offset:对象成员“offset”相对起始地址的偏移;
二者相减是什么呢?难道是得到包容对象的起始地址?
嗯,有可能,尤其是在嵌套COM中会这样做。
计算类成员的地址。