MFC 一个对话框类调用另一个类的成员变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MFC 一个对话框类调用另一个类的成员变量相关的知识,希望对你有一定的参考价值。

求大大给我指点下。
现有一个对话框程序,主对话框下有A,B两个子对话框。
A中获取编辑框变量
CString str;
GetDlgItemText(IDC_EDIT1_A,str);
此时str能获得EDIT1中输入的字符串。
AfxmessageBox(_T("str")); //可以输出EDIT1中输入的字符串。
现在问题是我在B中如何调用这个str。
B中有个EDIT2,我想要EDIT2中显示str中获得的字符串……
求大大指点。小弟太嫩了…………。

    使用全局变量

    对话框A中,把IDC_EDIT1_A相关联的变量设置为类的静态成员变量,可以在B中访问

    把A对话框编辑框的字符串,保存在主对话框变量中,这样B对话框也可以访问

参考技术A 作为全局变量即可调用

在同一个类的另一个成员函数的定义中调用一个类成员函数

【中文标题】在同一个类的另一个成员函数的定义中调用一个类成员函数【英文标题】:Calling a class member function inside definition of the other member function of same class 【发布时间】:2012-11-06 18:21:26 【问题描述】:

在同一个类的另一个成员函数的定义中调用一个类的成员函数的方法是什么?

例如: 文件: header.h

class A

public:
void fn1();
void fn2();
;

现在在 cpp 文件中: 函数.cpp

方法1:

#include"header.h"
void A::fn1()

//function body for fn1()

//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()

fn2();
 

方法2:

#include"header.h"
A obj_A;
void A::fn1()

//function body for fn1()

//What is the way to make a call for fn2()?
//assume I have definition of fn2() above similar to fn1()

obj_A.fn2();
 

请说明哪种方法是正确的?

谢谢, C++ 初学者。

【问题讨论】:

【参考方案1】:

两个版本都是正确的,但行为不同。第一个版本将在调用 f1 的同一个实例上调用该函数,而第二个版本将始终在 obj_A 实例上调用 f2。

【讨论】:

我认为说两者在技术上都有效(即它们生成有效代码)会更准确,但方法 2 不正确,因为函数调用是在不同的对象上进行的。 @ValekHalfHeart 不正确,这取决于 OP 没有明确制定的意图。 如果最初的调用是obj_A.fn1();,他们会做同样的事情(这会让单元测试变得有趣)。 问题是“在另一个同一类的成员函数的定义中调用的成员函数的方法是什么?” “同一类”部分对我说,第一个函数是从定义类行为的上下文中调用第二个函数,而不是在对象上调用它。我想这是主观的,我明白你的意思。【参考方案2】:

方法一是正确的。

方法 2 似乎在与您进行调用的实例不同的实例上调用该方法,这是一种不同的行为。在某些情况下,这就是您想要的,但您没有表明这是那种情况。

第一种方法有问题吗?

【讨论】:

以上是关于MFC 一个对话框类调用另一个类的成员变量的主要内容,如果未能解决你的问题,请参考以下文章

MFC 如何调用另一个控件的变量

mfc怎么设置全局变量

如何在vs2008 MFC中添加、删除成员变量

如何初始化作为另一个类的成员变量的基类对象?

MFC怎么调用其它窗口

如何在线程中调用其他类的成员函数和变量