我试图清理我继承的应用程序中的编译器警告.我们的一个类继承自TControl.我得到的警告是"改变的重新声明隐藏基类中的成员"
"已更改"是TControl中受保护的过程.我正在看的类已经用布尔属性覆盖了它
property Changed : Boolean read FChanged write FChanged stored true;
我已经排除了一些选项:
从"已更改"重命名为其他内容.这不是一个实用的选项,因为此属性在应用程序的任何位置都使用.
使用编译器指令隐藏警告.我可以这样做,但我更愿意找出警告的含义以及如何纠正它.
所以我的问题是:
1)这个警告真的有问题吗?"隐藏基础成员"有什么含义?
2)如何在不重命名属性或隐藏警告的情况下删除编译器警告?
我正在使用Delphi 2010
[编辑:有一些使用重构工具重命名违规财产的建议.我已经排除了这一点,因为重构工具在这个代码库上根本不起作用]
如果您自己的'Changed'也是一个过程,您可以使用override指令告诉编译器您在TControl中向基本Changed方法添加功能.如果你的声明不同或者你想要打破继承链的其他原因,你可以指定reintroduce指令告诉编译器你有意破坏链.
不幸的是,这对属性来说是不可能的,所以除了你的问题之外,没有真正的解决方案
我会选择第一个选项.由于您使用的是Delphi 2010,因此您可以使用Delphi中的重构工具在您的应用程序中重命名该属性,尽管在完成修改之前我会彻底检查修改,因为它们也可能会影响基类中的Changed方法. ..
| 归档时间: |
|
| 查看次数: |
744 次 |
| 最近记录: |