c++ - 在 C++ 中使用派生类型覆盖成员函数
问题描述
可以使用类似于
B::g()
或中显示的派生类覆盖参数B::h()
?如果没有,是否有明智的方法来实现同样的目标?
B::i()
为什么不工作是有道理的,但为什么其他人不工作?
我的目标是使用r
inB::g()
作为 type Y
。
struct X {};
struct Y : X {};
struct A {
virtual void f(X q);
virtual void g(X& r);
virtual void h(X* s);
virtual X i(); // note: overridden function is 'virtual X A::i()'
virtual X* j();
};
struct B final : A {
void f(Y q) final; // error: 'void B::f(Y)' marked 'final', but is not virtual
void g(Y& r) final; // error: 'void B::g(Y&)' marked 'final', but is not virtual
void h(Y* s) final; // error: 'void B::h(Y*)' marked 'final', but is not virtual
Y i() final; // error: invalid covariant return type for 'virtual Y B::i()'
Y* j() final; // works
};
解决方案
推荐阅读
- javascript - 使用 Google Apps 脚本在 Web 应用程序中创建 HTML 片段页面或模板页面以动态刷新它的明确方法是什么?
- java - 如何使用sign4j签署使用launch4j创建的可执行文件?
- c# - NullReferenceException 错误,但看起来一切都被正确引用了:(
- python - 在 Django 模板中动态循环列表项的列表
- php - 未选中“管理库存”时,WooCommerce 允许特定类别的延期交货
- c++ - C++ 如何将 int 存储为 char[]
- git - 如何将我的 github 存储库切换到基于令牌的身份验证而不是使用密码?
- node.js - 如何避免循环中的无异步/等待?
- postgresql - 为什么安装 Postgis 扩展后仍然无法使用 Postgis 功能
- phabricator - Phabricator:差异:是否可以使用自定义变更集在没有 git/svn 等的情况下创建评论