导航
  • 主页
  • VC综合技术
  • MFC新技术
  • 互联网技术
  • .NET 技术
  • VC/MFC界面
  • VC/MFC 进程
  • VC/MFC 数据库
  • VC++技术资源

MFC下如何实现类之间的数据传递

chenpeng0123 2010-08-02 09:16:14
各位大侠你们好,我在MFC下编程,对数据进行读取、分步处理和写入结果等操作,其中数据读取、数据处理和数据结果的写入分别是由不同的类完成的,请问如何实现对各个类之间的数据传递呢???
...全文
228 点赞 收藏 10
写回复
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
na_he 2010-08-02
在做一个类把你的三个功能糅合在一起。能完成这三个功能,数据为期私有的成员,对外隐藏。外部对这个类同易操作即可。
回复
向立天 2010-08-02
用全局变量最方便了
回复
ll305vc 2010-08-02
最好的办法就是在把数据保存在文档类中,就这就MFC的思想。基本上所有的类都可以调用到这个类
回复
chenpeng0123 2010-08-02
那我是不是可以在文档类中分别对各个类进行实例化,然后通过文档类再进行类之间的数据传递呢??
回复
Eleven 2010-08-02
看两个类之间的关系,如果亲缘关系比较近,比如父窗口和子窗口的关系,那么可以直接修改子类的构造函数,加入父窗口类的指针,这样子类就可以调用父类的public函数了;如果亲缘关系比较远,可以使用中间类来中转,比如主框架窗口类。
回复
icefairy 2010-08-02
[Quote=引用 1 楼 nola 的回复:]
全局,静态,类接口函数,构造函数。
[/Quote]

类接口函数

up
回复
xingpacer 2010-08-02
还有就是尽量不要用全局变量~
回复
xingpacer 2010-08-02
当然std::vector<string> m_dataList;是public类型的成员变量,这样外面的类才能访问
回复
xingpacer 2010-08-02
假设数据读取结果存放在StoreInfo类中,可以定义一个static变量和一个static函数就可以实现多个类的数据的共享
(1)StoreInfo类的.h文件如下:

class StoreInfo
{
public:
static StoreInfo *Instance();
StoreInfo();
virtual ~StoreInfo();
...... // 类中其他接口和变量的定义
private:
static StoreInfo *m_Instance;
};


(2)StoreInfo类的.cpp文件如下:

StoreInfo *StoreInfo::m_Instance=0; //静态变量要拿出来初始化

StoreInfo::StoreInfo()
{

}

StoreInfo::~StoreInfo()
{

}

StoreInfo *StoreInfo::Instance()
{
//注意:静态函数只能访问静态变量
if(m_Instance == 0)
{
m_Instance = new StoreInfo();
}

return m_Instance; //只实例化一次
}

(3)在StoreInfo类中创建一个存放数据结果的成员变量(随便定义一个说明一下):

std::vector<string> m_dataList;

(4)上面工作完成了,在你的自定义的数据读取类、数据处理类和数据结果类中,就可以用如下的方式来访问共享的std::vector<string> m_dataList;变量了:

StoreInfo::Instance()->m_dataList

---------------------------------
另外,如果你的数据的读取和处理是分别使用不同的线程来实现的话,就要考虑线程同步的问题,此时使用临界区就可以了

回复
踏实每一步 2010-08-02
全局,静态,类接口函数,构造函数。
回复
发动态
发帖子
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……