C++ 全局变量怎么不变呢?

C++全局变量不更新,以下基于MFC最简单的对话框程序
void CAboutDlg::Message()//在这个对话框类里面显示另一个类的数值
{
CMFCMainDlg mdlg;
CString ss;
ss.Format(L"m_test is %d ", mdlg.m_test); MessageBox(ss);
}

void CMFCMainDlg::OnBnClickedButton1()
{
// 这个对话框上面有一个编辑框,对应变量m_strtest
UpdateData(true);//输入后更新到变量中
m_test = _ttoi(m_strtest);//CString 转化为int,m_test是全局变量
CString ss;
ss.Format(L"m_test is %d ", m_test); MessageBox(ss); //这里显示输入的更新的值
CAboutDlg dlgAbout;
dlgAbout.Message();//这个总是输出 0
}
为什么变量传不过去?我想使用更新后的变量应该怎样做?

void CAboutDlg::Message()//在这个对话框类里面显示另一个类的数值


{
CMFCMainDlg mdlg;

//这个是临时对象,和m_test = _ttoi(m_strtest);这里的CMFCMainDlg是两个对象,你改了其中一个的m_test,不会反映到另一个中去

..............
}

最简单的改法,把m_test声明为static变量

温馨提示:内容为网友见解,仅供参考
无其他回答

C\/C++里面的全局变量是不是每运行一下,那个值要变?
首先全局变量的值不加以认为改动,不会改变。其次全局变量的值在子函数中改动也会影响到主函数。最后在以个函数中,重新定义了一个与全局变量的变量名相同的变量时,会在这个函数里蔽屏掉全局变量,一出这个函数就恢复正常。int a=1;int n(int p){p=12;}main(){printf("%d\\n",a);a=n(a);...

...保证”局部变量在存活期间只被初始化一次后不可以被改变 C++ C
程序加载即可完成初始化,这和 c 语言里的全局变量初始化基本是一致的。dynamic initialization:动态初始化主要是指需要经过函数调用才能完成的初始化,比如说:int a = foo(),或者是复杂类型(类)的初始化(需要调用构造函数)等。这些变量的初始化会在 main 函数执行前由运行时调用相应的代码从而得以...

c++定义全局变量后在子函数中的值改变了但是在主函数中的值还是0_百度...
你是不是定义了全局变量后又在子函数或者主函数里面定义了同名的变量,如果是这样的话,主函数或者子函数使用的是该函数里面定义的变量(局部变量),全局变量被自动忽视了。但是局部变量不影响全局变量的值。所以,无论你是在主函数、还是子函数,或者两个里面都定义了同名变量,你在子函数中更改值是达...

c++为什么全局定义的变量在主函数中还能再定义一次?
C++中,与 全局变量 同名的 局部变量 (在函数内的变量或语句块内的变量)是允许的,且局部变量的“优先级”比全局的高——及在函数内使用的是局部变量。

C++中全局变量的值需要改变怎么办
声明为 const 的量初始化后,它的数值在程序中是不允许改变的,因为它不可为左值。例如: const int lane = 1000; const int v_max = 18; 数值在程序中是不允许改变。若要变,只能声明为非 const。 例如:int lane = 1000, v_max = 18;全局量 v 用指针: int *v;在程序中动态...

C++中如果一个int型变量没有给具体值,为什么用cout输出时会是一个确 ...
C\/C++的变量声明时,多数是可初始化也可不初始化的;而其中有些变量不初始化时系统会自动初始化为0或NULL,具体可能还会因编译器的不同而有差异。通常情况下,int、double、char等类型的变量不初始时其值是不定的,而数组、字串则可能是0或NULL或许也是不定的。所以你遇到的这种情况一点都不奇怪。正...

为什么c++中inti的值一定是0呢?
显然,I和y都是局部的变量。I的初值是0,但是y是未初始化的局部变量。如:IntI=0;Inty;(;我< y;我+ +){ //……} }

C++中,类内的成员变量自动初始化为零吗,而全局变量随意赋值
如果该对象是全局的话,其成员中的内置类型就会自动初始化对应的默认值(像整形就为0)和调用构造函数初始化,如果是局部的话只会调用默认构造函数赋值,构造函数中没有涉及到的成员,并不会赋值。

C++ 为什么不能这样直接用函数修改全局变量的值?
char&x)即可。因为按引用方式传参,引用相当于是外部变量的别名,实际操作的就是该变量,在函数内对该变量进行修改的话,在外部该变量也会相应被修改。而按值方式传参,实际上是复制了一个外部变量的副本进入函数中,在函数内操作的为该副本,对该变量的修改并不会实际修改函数外的该变量。

C++ 全局变量和全局静态变量有什么区别?
变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。

相似回答