应用场景:

(1)主对话框包含一个Tab控件,Tab控件用来切换显示若干子对话框,子对话框类的成员需要互相访问。

(2)或者程序中包含多个类,各类之间需要互相访问。

方法1-定义指针成员变量:

详情参见文章:MFC一个类访问另一个类成员对象的成员变量值 - 路人浅笑 - 博客园 https://www.cnblogs.com/perfy/p/5329630.html

方法2-定义全局指针变量:

与方法1类似,只不过定义的指针变量在类的实现cpp文件中,是全局变量。

//TeachDlg.h

class TeachDlg
{
int number;
void Lesson();
}
//TeachDlg.cpp

#include "TeachDlg.h"

TeachDlg  * g_DlgTeach;

void TeachDlg::Lesson()

{
number = 1; }

这样就可以省去在类外初始化静态成员指针这一步,只需要在类的构造函数中或者对话框初始化函数中对指针进行赋值。如下:

//TeachDlg.cpp
BOOL TeachDlg::OnInitDialog()
{
CDialogEx::OnInitDialog(); // TODO: Add extra initialization here
g_DlgTeach = this;
...
}

最后在其他类中调用本类的函数时,需要在其实现cpp文件中声明这个全局指针即可。

//Student.cpp
#include "TeachDlg.h" extern TeachDlg *g_DlgTeach; Student::Study()
{
g_DlgTeach->Lesson();
}

注意:

如果没有对指针进行初始化, 即没有执行 g_DlgTeach = this; 这句话,

就调用指针来访问TeachDlg类的成员函数,是不会报错的,但访问成员变量就会报错。

最新文章

  1. Java集合类学习笔记(Map集合)
  2. 自动kill慢查询
  3. [转]向facebook学习,通过协程实现mysql查询的异步化
  4. Linux的sed命令
  5. If one session has a shared or exclusive lock on record R in an index, another session cannot insert
  6. Maven聚合
  7. cocos2dx - android环境配置及编译
  8. json的那些事
  9. 基于python的WGS84转百度坐标
  10. IDEA 代码规范插件
  11. JMeter命令模式下动态设置线程组和持续时间等动态传参
  12. 未知高度的div自适应图片高度
  13. python随机数学习笔记
  14. Java中的访问权限控制
  15. 在代码中设置RelativeLayout布局中标签的android:layout_toLeftOf、android:layout_toRightOf等属性
  16. 【Latex】常用工具包
  17. 用SCSS需要小心IE对css的几个限制
  18. iOS设计规范HIG
  19. 在Java Web项目中,不用ActionContext类来获得tomcat部署项目的绝对路径
  20. Android:ViewPager 切换动画效果

热门文章

  1. Maven私服(Nexus)资源上传下载
  2. tomcat JRE_HOME
  3. JAVA 没有重载运算符,那么 String 类型的加法是怎么实现的,以及String类型不可变的原因和好处
  4. leetcode239
  5. 设置 VS 工程目录不保存 sdf / VC.db 文件和 Ipch 文件夹
  6. android之RefBase
  7. asmx 接收数据过大 发生错误
  8. jq 切换功能toggle
  9. Shiro Remember me设置
  10. JAVA数据库连接池C3p0 以及阿里Druid提供的连接池