如何访问类的私有成员

这个问题折磨我一段时间了。在 Symbian 系统下编程,此问题显得更加是个问题,因为系统的功能也是以类的方式提供的。某些时候,由于你需要完成一些很特殊的任务,你明明知道某个类的某个成员可以很容易地帮助你实现目标,可是你却不能使用它,因为它是私有的。

当然,你也可以采用一些其他的暴力手段来解决这个问题,正如我在“暴力倾向”中所提到的那样,不过,程序看起来总归很难看。

聪明的老汉后来想到了一个办法,那就是把原来的头文件处理一下,用个文本编辑器,尤其是查找替换的功能比较强大的那种,把原来的 private 声明统统换成 public 的。

不过这样也会有点问题,首先就是很累,一个头文件一个头文件地去处理。而且,如果你安装了更新版本的 SDK,那你就需要从头再来过。

好在事情到这里已经快接近尾声了,原因很简单,老汉是个聪明的老汉。既然本质上就是干文本替换的工作,那预编译器岂不是一个更好的选择吗?

所以,老汉的终极解决方案就是,在包含头文件之前定义如下两个宏:

有的英雄可能要问了,只定义第一个岂不是就足够?差矣!因为第一个搞不定下面这种情况:

哈哈,有需求的朋友们,爽一下吧?

发表评论

电子邮件地址不会被公开。 必填项已用*标注