我的编译器提供以下警告:
overloaded virtual function "MyBaseClass::setValue" is only partially overrIDden in class "MyDerivedClass".
这些类看起来像这样:
class MyBaseClass{public: virtual voID setValue(int); virtual voID setValue(SpecialType*);}class MyDerivedClass : public MyBaseClass{public: virtual voID setValue(int);}
摆脱此警告的简单方法是为基本函数使用不同的名称,但我想知道是否有任何令人信服的理由来修复此特定警告.我不相信这违反了C标准.我的猜测是警告程序员他们可能忘记为所有可能的输入类型实现行为.在我们的例子中,有意排除某些特定类型.
你会劝阻完全压制这个警告吗?
解决方法 setValue(int)的覆盖隐藏了基类的setValue(SpecialType *)(参见 C++ FAQ Lite),因此如果您尝试调用setValue(new SpecialType()),您将收到错误.您可以通过向派生类添加using指令来避免这种情况,该派生类从基类“导入”重载:
class MyDerivedClass : public MyBaseClass{public: using MyBaseClass::setValue; virtual voID setValue(int);};总结
以上是内存溢出为你收集整理的C中部分类函数覆盖的问题全部内容,希望文章能够帮你解决C中部分类函数覆盖的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)