珞珈山水BBS电脑网络程序人生 → 单文区文章阅读

单文区文章阅读 [返回]
发信人: leonlux (老鼠上了猫), 信区: Programm
标  题: Re: 请教vc6.0中的全局函数问题
发信站: 珞珈山水BBS站 (Thu Jul 13 19:29:09 2006), 转信

    首先在设计上,这个程序里用全局变量作为传值中介的想法肯定不好,inum本来就属于basedlg,为什么要把它放到全局空间里?面向对象的封装概念很重要的一个目的就是减少全局空间的名称污染。
    其次在技术上,如果inum属于basedlg,那么永远不可能利用extern int inum的方法访问到它。“extern+变量声明”的形式只适用于全局变量,意义是这个全局变量在别的编译单元里定义,而我这里需要用它。而inum则存在于basedlg对象的内部,属于成员变量。
    解决这个问题其实很简单:在设计child1ofbasedlg和childofchild1dlg……等类的时候,只要写一个接收inum等参数的构造函数就可以使用inum等来初始化相关对象了。
   如
   child1ofbasedlg(int inum):m_inum(inum){…};

【 在 lawn (不会游泳的鱼) 的大作中提到: 】
: 我在基于对话框的程序中,在一个对话框类如basedlg.cpp中声明 int inum;
: 在这个对话框中要DoModal()另一个对话框,也就是点一个按钮后打开另一个对话框如c
: hild1ofbasedlg。这个对话框child1ofbasedlg需要inum来进行初始化,我就在类child1o
: ...................

--
老虎不发威,你当我hello kitty?


※ 修改:·leonlux 于 Jul 13 19:30:07 修改本文·[FROM: 218.207.15.*]
※ 来源:·珞珈山水BBS站 bbs.whu.edu.cn·[FROM: 218.207.15.*]
[返回单文区目录]

武汉大学BBS 珞珈山水站 All rights reserved.
wForum , 页面执行时间:13.480毫秒