VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 201|回复: 4

在04客户端队列管理及自定义协议,对AfxGetServer单例,调用非静态函数不理解

[复制链接]
63_avatar_middle
最佳答案
1 
donate_vip 发表于 2020-5-30 11:31:41 | 显示全部楼层 |阅读模式

我知道线程函数是一定要设置为 静态函数,因为线程函数只允许有一个参数,而所有非静态函数都是默认包含了一个 this指针

而静态函数不能直接调用非静态函数,因此在课程中,老师用了一个自定义函数来调用
非静态函数。

在04客户端队列管理及自定义协议,对AfxGetServer单例,调用非静态函数不理解


为什么要这样写,为什么要这样调用 非静态函数?
在课程中,老师只是一语带过,希望大牛同学,不吝赐教,用教浅显的语句解释一下?

函数声明:
  1. CServer *AfxGetServer();
复制代码


函数定义:
  1. CServer *AfxGetServer()
  2. {
  3.         static CServer *pGServer = NULL;
  4.         if (!pGServer) {
  5.                 pGServer = new CServer();
  6.         }

  7.         return pGServer;
  8. }
复制代码



函数使用:
  1. AfxGetServer()->RemoveTargetClient(pClient);
复制代码






上一篇:ghost远控是什么语言编写的?
下一篇:MFC(图书管理系统)如何从模态对话框返回数据给主对话框的List Ctrl 急!!
63_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-5-30 11:45:51 | 显示全部楼层
老师代码:
  1. CServer *AfxGetServer()
  2. {
  3.         static CServer *pGServer = NULL;
  4.         if (!pGServer) {
  5.                 pGServer = new CServer();
  6.         }

  7.         return pGServer;
  8. }
复制代码


学生:就是 new 一个CServer 对象?但是 这个new出来的对象,跟本身创建的对象,是一样的吗?

老师:地址肯定不一样,就不是一个对象

学生:哦,明白了,只是为了 操作非静态函数而已,只是为了有个指针,有了这个指针,就可以操作非静态函数了,管他是不是本身创建的对象。
70_avatar_middle
最佳答案
18 
在线会员 发表于 2020-6-1 11:18:18 | 显示全部楼层
单例模式,为了更方便地 调用CServer成员函数
25_avatar_middle
最佳答案
0 
在线会员 发表于 2020-8-9 00:57:27 | 显示全部楼层
这个函数定义无法编译通过,语法错误,你们咋办到的?
25_avatar_middle
最佳答案
0 
在线会员 发表于 2020-8-9 00:58:40 | 显示全部楼层
CServer *AfxGetServer();编译提示语法错误,咋办呀。
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-26 13:28

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表