在项目中,我创建了main.cpp和main.h,并在.cpp文件中定义了公共变量int a和int b。
目前我在aproc.cpp和aproc.h中创建了一个类Aproc(它是无对话框),并使用include aproc.h添加到main.cpp中。
现在,在aproc.cpp中我想得到main.h中定义的变量“a”,我正在使用这段代码:
((MainDlg*)GetParent())->a;
编译器运行良好, 但它会在GetParent中运行时错误,
变量声明为
public:
int a;
aproc.h被视为
class aproc.h : pulbic CWnd
{
}
如何获取公共变量?
答案 0 :(得分:0)
您还没有告诉我们aproc窗口是否是main的子窗口,以及是否已创建aproc窗口,以及您获得的运行时错误。要避免这些可能的问题,可以使用全局MFC函数AfxGetMainWnd()。
((CMainDlg*)AfxGetMainWnd())->a
答案 1 :(得分:0)
如果你的程序在((MainDlg*)GetParent())->a;
崩溃,很可能意味着GetParent()返回NULL,表示失败。在使用GetParent()的结果之前检查返回值。
MainDlg *p = (MainDlg *)GetParent();
if(p == NULL) {
int err = GetLastError(); // <--- inspect this return value, it'll tell you why it failed
}
GetParent()通常由于以下原因之一而失败:
由于您似乎正在使用对话框(您的转换为MainDlg),我怀疑#1适用,您在创建对话框/ OnInitDialog之前调用了GetParent()。