MFC中怎样在一个类中调用另外一个变量?

hehorizon 2014-05-13 10:04:36
在A类中有一个public变量angle,我想在B类中调用这个变量。我在B类中重新定义了A类的一个对象,然后使用rb.a这样的形式调用,但是我发现angle的值根本没有传过来,a 的值是一个随机值,并没有像angle在A类中不断变化的,为什么呢?求指导
...全文
451 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hehorizon 2014-05-15
  • 打赏
  • 举报
回复
引用 14 楼 jianwen0529 的回复:
[quote=引用 10 楼 hehorizon 的回复:] [quote=引用 6 楼 jianwen0529 的回复:] 你要用的时候直接 CClassA::angle 就可以了啊! 你这个是传递了一个副本,当然angle变化的时候,你另一变量是不知道的 你得用指针!
因为我的这个变量不是静态类型的,所以这个方法不行啊[/quote] 那把当前this指针传递过去也行的![/quote] 当前this指针??
幻夢之葉 2014-05-15
  • 打赏
  • 举报
回复
引用 10 楼 hehorizon 的回复:
[quote=引用 6 楼 jianwen0529 的回复:] 你要用的时候直接 CClassA::angle 就可以了啊! 你这个是传递了一个副本,当然angle变化的时候,你另一变量是不知道的 你得用指针!
因为我的这个变量不是静态类型的,所以这个方法不行啊[/quote] 那把当前this指针传递过去也行的!
hehorizon 2014-05-14
  • 打赏
  • 举报
回复
引用 11 楼 zhangyonghui2117 的回复:
HWND hwnd= ::FindWindow(NULL,"窗口类名");//得到HWND CxxDlg* pdlg = (CxxDlg*)FromHandle(hwnd); pdlg->angle//这里可以调用了
按照你的方法试了一下,但是出现“FromHandle”: 找不到标识符,“FromHandle”这个函数我之前没有见过,不是很理解,下面是我的代码 double angle; HWND hwnd= ::FindWindow(NULL,"LiFeng_Camera"); LiFeng_Camera* pdlg = (LiFeng_Camera*)FromHandle(hwnd); pdlg->angle;
hehorizon 2014-05-14
  • 打赏
  • 举报
回复
引用 1 楼 ilikehigame 的回复:
肯定的呀,你在B里面定义了一个A的对象,而且没有生成A所以当然是随机数了。你想的到A中变量的值, 应该使用GetParent()去得到A 生成的对象!
这个方法具体是怎么弄的呢?我不太理解
「已注销」 2014-05-14
  • 打赏
  • 举报
回复
HWND hwnd= ::FindWindow(NULL,"窗口类名");//得到HWND CxxDlg* pdlg = (CxxDlg*)FromHandle(hwnd); pdlg->angle//这里可以调用了
hehorizon 2014-05-14
  • 打赏
  • 举报
回复
引用 6 楼 jianwen0529 的回复:
你要用的时候直接 CClassA::angle 就可以了啊! 你这个是传递了一个副本,当然angle变化的时候,你另一变量是不知道的 你得用指针!
因为我的这个变量不是静态类型的,所以这个方法不行啊
hehorizon 2014-05-14
  • 打赏
  • 举报
回复
引用 3 楼 zhangyonghui2117 的回复:
也可用::FindWindow函数得到窗口A指针pa,然后pa->angle,就行了
我发现引用传递太麻烦了,请问你这个方法具体是怎么弄呢?
hehorizon 2014-05-14
  • 打赏
  • 举报
回复
以上各位说的好多我都试过,在B类头文件中包含A类这个不行,指针我不太熟悉所以没有尝试,不过昨晚这个问题已经解决了,是用引用传递解决的,谢谢各位了
buyong 2014-05-14
  • 打赏
  • 举报
回复
angle是A类的一个变量,他的值是属于A的一个对象的。你在其他地方又建了一个新对象,angle当然不一样。 你有一个笔记本,里面有个文件。我买一个和你一样的笔记本,我为什么没有你的文件??
幻夢之葉 2014-05-14
  • 打赏
  • 举报
回复
你要用的时候直接 CClassA::angle 就可以了啊! 你这个是传递了一个副本,当然angle变化的时候,你另一变量是不知道的 你得用指针!
Symfund 2014-05-14
  • 打赏
  • 举报
回复
晕,一个类可以有多个实例,要想在多个类间共享数据,可以将其数据变量类型定义成公有的静态类型: class CClassA { public: static double angle; // 此处略去几百字 }; static double CClassA::angle = 0.0;
从来不作 2014-05-14
  • 打赏
  • 举报
回复
什么叫“angle的值根本没有传过来”,如果只是B类想使用A类的数据,那么在B类的定义中包含一个A类,肯定是可以的。请楼主贴出代码。
「已注销」 2014-05-14
  • 打赏
  • 举报
回复
也可用::FindWindow函数得到窗口A指针pa,然后pa->angle,就行了
hehorizon 2014-05-13
  • 打赏
  • 举报
回复
GetParent不是获得指定子窗口的父窗口句柄吗?
  • 打赏
  • 举报
回复
肯定的呀,你在B里面定义了一个A的对象,而且没有生成A所以当然是随机数了。你想的到A中变量的值, 应该使用GetParent()去得到A 生成的对象!

64,649

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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