[转帖]通过singleton模式和global static variable变量做C++程序各个模块之间的数据通信_Tomcat, WebLogic及J2EE讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Tomcat, WebLogic及J2EE讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2388 | 回复: 0   主题: [转帖]通过singleton模式和global static variable变量做C++程序各个模块之间的数据通信        下一篇 
dwx8023
注册用户
等级:上尉
经验:612
发帖:114
精华:0
注册:2011-11-8
状态:离线
发送短消息息给dwx8023 加好友    发送短消息息给dwx8023 发消息
发表于: IP:您无权察看 2015-3-20 10:53:33 | [全部帖] [楼主帖] 楼主

提示:这个办法可以用在Qt C++程序和Qt QML的数据交换

首次初始化:DDocumentSets::getInstance()->setModel(oa_model);

以后任何class中都可以获得这个实例: DDocumentSet* oa_model = DDocumentSets::getInstance()->getModel();

并调用其方法:  oa_model->xxxx();

header文件:

[cpp]view plaincopy
#ifndef DDOCUMENTSETS_H_
#define DDOCUMENTSETS_H_
#include "DDocumentSet.hpp"
class DDocumentSets {
      private:
      static DDocumentSets* _instance;
      DDocumentSets();
      DDocumentSet* model;
      public:
      static DDocumentSets* getInstance();
      void setModel(DDocumentSet* oa_model);
      DDocumentSet* getModel();
      virtual ~DDocumentSets();
};
#endif /* DDOCUMENTSETS_H_ */


cpp文件:

[cpp]view plaincopy
#include "DDocumentSets.h"
DDocumentSets* DDocumentSets::_instance; //Jiang
DDocumentSets* DDocumentSets::getInstance() {
      if (_instance == 0) {
            _instance = new DDocumentSets();
      }
      return _instance;
}
void DDocumentSets::setModel(DDocumentSet* model) {
      this->model = model;
}
DDocumentSet* DDocumentSets::getModel() {
      return model;
}
DDocumentSets::DDocumentSets() {
}
DDocumentSets::~DDocumentSets() {
}


参考:

http://stackoverflow.com/questions/8612206/linker-error-when-using-static-members


在C++程序中,need to define the static variable in cpp file and not in header file.

在Qt程序中,需要在cpp和header文件中都定义相同名字的static变量。否则编译出错:

undefined reference to xxxx(static 变量)


--转自 北京联动北方科技有限公司




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论