CtestDlg类里使用函数指针数组//怎么使用?

void(*FunP)();
void test();
OnInitDialog()
CtestDlg::FunP = &CtestDlg::
(*FunP)();
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有在学习MFC中的对话框时,有一段代码,如果在一个函数中定义CTestDlg,然后再用Create函数,不能显示对话框_百度知道
在学习MFC中的对话框时,有一段代码,如果在一个函数中定义CTestDlg,然后再用Create函数,不能显示对话框
但是如果先定义一个指针,CTestDlg * p=new CTestDlg,这样再调用Create,这样就可以显示对话框了,这是为什么?定义指针和定义变量有什么不一样吗?求解释?
我有更好的答案
局部变量:位置在栈,局部变量就会被释放,堆有个特点就是你不是放,它就一直在,除非你退出程序后,操作系统将他收回,栈有一个特点,系统会自动收回。函数内部定义的变量一般都是在栈上的,除非你new或者malloc,所以窗体已经gameover了……2. 定义指针和变量的区别在于占用空间的位置!!。指针:位置在堆!注意函数运行完楼上的说的有些离体了……1. 为什么new可以,是因为局部变量的原因
采纳率:31%
p-&CReate(你的对话框资源ID,this);
/移动到你需要的位置
p-&ShowWinow(SW_SHOW);MoveWindow(); //} 3,这样就方便很多了。注意;/this表示对话框父窗口是当前对话框
p-&MoveWindow();移动到你需要的位置p-&ShowWinow(SW_SHOW);
//}else{p-&gt.p指针必须是这个类的成员变量 1.CTestdlg 对话框属性中
把style 改成 child2.
if( p == NULL ){
p = new CTestDlg()
本回答被网友采纳
直接定义的是临时变量,代码一退出作用域,对话框对象就释构了,区别是一个是,栈上的临时变量,一个是堆变量。
为您推荐:
其他类似问题
您可能关注的内容
mfc的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。Visual C++构造函数初始化一个指针类问题_百度知道
Visual C++构造函数初始化一个指针类问题
在看零基础学Visual C++那本书,第83页讲:在CTest6_1Dlg中添加一个变量:dlg1*并且在CTest6_1Dlg的构造函数中初始化为NULL。添加变量没问题,但初始化不会弄,源程序如下:
class dlg1;
class CTest6_1Dlg : public CDialog
// Construction
<a href="http://pan.baidu程序
我有更好的答案
CTest6_1Dlg:CTest6_1Dlg(CWnd* pParent = NULL):pdlg(NULL)///这里是函数体}或者在函数体里面初始化;构造函数冒号后面跟着的就是初始化列表{&#47首先你要实现一下构造函数CTest6_1Dlg(CWnd* pParent = NULL) 初始化dlg1 *可以在构造函数的初始化列表里面初始化 或者在函数体里面初始化也行 比如:CTest6_1Dlg:
我试了第三种,但是编译报错。我把程序给你看看吧,是个例程,很简单的。
你第二张图 CTest6_1Dlg::CTest6_1Dlg(CWnd* pParent = NULL):pdlg(NULL)这个地方不能这样写 因为你在类外(在第一张图报错的地方)已经实现构造函数 ,两个只能留一个;假如你保留类外实现,那你第二张图 就应该是写成CTest6_1Dlg(CWnd* pParent = NULL); ;第二张图就写成 CTest6_1Dlg::CTest6_1Dlg(CWnd* pParent ):CDialg(CTest6_1Dlg::IDD,pParent),pdlg(NULL){
...........(此处内容省略)}
照你说的成功了。但还有个问题想请教一下:上图中可以看出定义了一个类:CTest6_1Dlg继承于CDialog。类中有成员变量dlg1;并且CTest6_1Dlg::CTest6_1Dlg(CWnd* pParent = NULL);这一句是表示为构造函数的话,那下图中这个函数是干嘛用的:感觉这个函数也是构造函数,这样就有两个构造函数了吗?可以赋值写花括号里吗
上面那个相当于是定义了构造函数 但没有实现
,下面就是那个构造函数的实现
;pdlg的初始化是可以放在花括号里面的 CDialog(CTest6_1Dlg::IDD,pPrarent)就一定要放在初始化列表里面 不能放在花括号里面
采纳率:54%
直接赋值 为null就可以了呀,不明白你想问什么不会弄?
这样写报了9个错误
在对象里面声明变量,赋值是没有用的,你需要在构造函数里面给他赋初值
为您推荐:
&#xe675;换一换
回答问题,赢新手礼包&#xe6b9;
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 函数指针数组 的文章

 

随机推荐