我有一个类层次结构,其中每个类都有一个compute
会触发一些(重新)计算的方法。这个方法是一个虚拟方法(它在基类中是纯虚拟的)。在某些情况下,我想从构造函数中调用此方法来立即设置我的实例。
当然,这可能很危险。Eclipse CDT 代码分析发出错误“在构造函数中调用虚拟方法可能导致崩溃和意外行为”。我了解错误信息及其原因。请,请不要告诉我为什么要避免这种情况!!!
为了使错误消息和(更重要的)错误的可能性消失,我引入了一个范围解析运算符。所以构造函数现在看起来像这样:
MyClass::MyClass()
{
MyClass::compute();
}
我希望那是绝对安全的。但是 Eclipse 代码分析继续显示错误消息。为什么?不可能调用意外的方法。如果该方法是纯虚拟 in MyClass
,编译器会告诉我。
这是 Eclipse 代码分析错误还是我遗漏了什么?
编辑:范围解析运算符应该抑制虚拟解析。因此,我希望它可以防止警告中提到的所有可能的错误。我的假设是真的吗?