MFC 引用对话框类中的变量

shnaying1945 2014-09-03 04:52:39
对MFC有点嫩,别见怪啊。

类a的实例:对话框A,类b中想用类a中的变量,是实例化后的变量,也就是对话框的某一参数,但不一定是控件。

换个说法,首先添加了对话框A,然后关联了类a,生成了对话框后,也就是实例化了类a后,各操作对该对象做了一定程度的设置和改变。这时候类b想设置或者取值该对象中的成员变量,当然不能新建个a类对象,但又如何传递给类b的对象呢?
...全文
190 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
信阳毛尖 2014-09-04
  • 打赏
  • 举报
回复
类b中保存类a指针,直接通过指针去取a的相关值
wangyubuct1 2014-09-04
  • 打赏
  • 举报
回复
关注一下,感觉还是重新设计三个类之间的关系吧,换个思路可能就简单了。
shnaying1945 2014-09-04
  • 打赏
  • 举报
回复
如果C类的对象在程序运行时就创建,而且不在任何其他类里面创建的,那只能是在main(不记得MFC的程序入口函数叫什么了)函数里面,貌似这么搞是不是太复杂周折了?
信阳毛尖 2014-09-04
  • 打赏
  • 举报
回复

class CExampleA
{
public:
	//构造函数初始化列表
	CExampleA(): m_nData(0),m_dbData(0){}
	CExampleA(int n, double db): m_nData(n),m_dbData(db){}
	~CExampleA() {}

	inline void		SetDataInt(int n)		{ m_nData = n; }
	inline int		GetDataInt(void)		{ return m_nData; }
	inline void		SetDataDb(double db)	{ m_dbData = db; }
	inline double	GetDataDb(void)			{ return m_dbData; }
private:
	int		m_nData;
	double	m_dbData;
};

class CExampleB
{
public:
	//构造函数初始化列表
	CExampleB(): m_pExampleA(NULL){}
	CExampleB(CExampleA *pExampleA): m_pExampleA(pExampleA){}
	~CExampleB() {}

	inline void			SetExampleA(CExampleA *pExampleA)	{ m_pExampleA = pExampleA; }
	inline CExampleA*	GetExampleA(void)					{ return m_pExampleA; }
private:
	CExampleA	*m_pExampleA;
};

//使用
CExampleB b;
CExampleA a(10,20.5);
b.SetExampleA(&a);

a.SetDataInt(100);
a.SetDataDb(5.13);
shnaying1945 2014-09-04
  • 打赏
  • 举报
回复
引用 6 楼 lsq19871207 的回复:
类b中保存类a指针,直接通过指针去取a的相关值
来个简单的代码呀。
shnaying1945 2014-09-03
  • 打赏
  • 举报
回复
引用 1 楼 SiGoYi 的回复:
首先类B需要包含类A的头文件,再把A对象的指针传过去就可以了(可以使用函数或其他方法,方法多的是)。但只能使用类A中的公有成员。
不大明白。 A类已经定义好了,然后在C类里面创建A的对象a,a中有a1=1,在B类里想调用C类里正在使用的a。 如果在C类里创建一个A类的指针指向a,用一个公有函数返回该指针。那在B类里要调用这个公有函数,那又需要创建一个C类的对象方可调用,那创建一个新的C类的时候,里面也新创建的A的对象还能是想要的a吗?a1还能等于1吗?
SiGoYi 2014-09-03
  • 打赏
  • 举报
回复
首先类B需要包含类A的头文件,再把A对象的指针传过去就可以了(可以使用函数或其他方法,方法多的是)。但只能使用类A中的公有成员。

16,466

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧