• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > 关于pThis指针的问题

关于pThis指针的问题

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了pthis,电流表指针偏转问题,鼠标指针出问题,指针赋值问题,鼠标指针出现问题等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: 关于pThis指针的问题
描述:

#define DECLARE_PTHIS(type, offset) type *pThis = (type*)((char*)this) - (long)&(((type*)0)->offset); 有什么作用 


解决方案1:

引用 3 楼 cnzdgs 的回复:
这种宏常用于链表中,例如: 
class NODE { 
    NODE* Last; 
    NODE* Next; 
}; 
class TESTDATA { 
    // some data; 
    NODE Node; 
}; 
程序中使用TESTDATA类建立链表,各节点之间通过Node成员来联系,即Node.Next表示下一节点中Node成员的地址,在NODE类的某个成员函数中如果要得到TESTDATA结构指针时,就可以使用这个宏来取得。 
另外提一下,这种做法可读性较差,而且不方便使用,应使用派生类的方式替代…

学习了.

解决方案2:

这种宏常用于链表中,例如:
class NODE {
    NODE* Last;
    NODE* Next;
};
class TESTDATA {
    // some data;
    NODE Node;
};
程序中使用TESTDATA类建立链表,各节点之间通过Node成员来联系,即Node.Next表示下一节点中Node成员的地址,在NODE类的某个成员函数中如果要得到TESTDATA结构指针时,就可以使用这个宏来取得。
另外提一下,这种做法可读性较差,而且不方便使用,应使用派生类的方式替代,只是某些早期遗留下来的结构中仍采用这种方式。

解决方案3:

(type*)((char*)this): 对象的起始地址;
(long)&(((type*)0)->offset:对象成员“offset”相对起始地址的偏移;
二者相减是什么呢?难道是得到包容对象的起始地址?
嗯,有可能,尤其是在嵌套COM中会这样做。

解决方案4:

计算类成员的地址。


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 关于pThis指针的问题
  • pThis是个什么东西?

相关文章

  • 2017-06-04 怎么调用ActiveX控件
  • 2017-06-04 谁给我一些学习com的资料呀,或者网站(100分)
  • 2017-06-04 注册一个ActiveX的控件,在注册表中加了些什么项?
  • 2017-06-05 自定义IRichEditOleCallback实现RichEdit复制粘贴功能,只能复制不能粘贴的最可能原因是什么?
  • 2017-06-04 问一下ATLproject的低级问题。。。
  • 2017-06-04 请问这个问题怎么解决?大家帮帮忙
  • 2017-06-05 复合控件插入以ActiveX形式插入Com组件,造成Userhandles泄露
  • 2017-06-05 dll隐式调用的问题!
  • 2017-06-05 [初学求助]怎样在子线程下画图?
  • 2017-06-04 vC2008activexPropPage属性页设置属性问题

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • sqlite3显示无法打开database
    • 在WTL里,如何拦截MDI所有的消息,并把拦截的消息全部交给子窗体处理
    • 串口读取数据不成功
    • 新建线程的两个问题:请指点,多谢。急~~~~~
    • jsp调用ocx控件函数时类型不匹配
    • 怎么同时处理IPersistStorage和IPersistFile
    • 初学COM,com和Delphi程序之间如何传字符串呀?
    • 截获程序调用API的真空地带
    • Excel中如何设置一个单元格的宽度和高度。
    • 我做activeX继承了一个Static控件,编译以后,我发现只有自定义的属性可以用,stock属性全部不能用!!!!!

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有