c++ - 派生类嵌套在基类中 - C++
问题描述
我正在尝试将以下 JAVA 代码转换为 C++ 代码。但无法弄清楚如何。
abstract class Base {
static class Derived extends Base {
// attributes
Derived(/*params list*/) {
// code
}
}
当我尝试执行以下操作时,编译器说Base
直到右括号才完成。我知道事情的工作方式与 JAVA 不同,但我无法弄清楚如何在 C++ 中重现此代码。
class Base {
class Derived: public Base{
// attributes
Derived(/* param list*/);
};
};
是否可以在 C++ 中做到这一点?也对非面向对象的方法开放。
解决方案
这是可以做到的。只需在 of 的主体中添加一个前向声明Base
并将定义移到 的定义下方Base
:
class Base
{
class Derived;
public:
virtual ~Base() = default;
protected:
Base() = default; // only allow initialization for subclasses to make this "abstract" without introducing a pure virtual function
};
class Base::Derived : public Base
{
// attributes
Derived(/*params list*/) {
// code
}
};
推荐阅读
- selenium - 詹金斯硒集成
- imagemagick - 使用 Imagemagick,在图像外部添加水印,例如。批量使用填充?
- javascript - 解构具有附加属性的项目
- php - JWT Laravel 修改密码机制
- node.js - User.findOne 返回 null
- python - ValueError:从数据帧中提取 X 和 Y 时,代码需要是类似数组的整数
- assembly - 我可以将 CPU 中的寄存器用作堆栈机器的“堆栈顶部”吗?
- node.js - FindOneAndUpdate MongoDB 与 Mongoose 更新用户的个人资料不使用电子邮件?
- pandas - 我正在尝试合并两个具有几个相同值但它给出一个空集的 DataFrame?
- javascript - 为什么删除按钮停止作用于通过函数创建的元素?| Javascript & HML