structs原型中的继承
inheritance in structs prototypes
是否可以在C++中表示:
struct foo {
int x;
int y;
struct A derived;
};
struct A {
int val;
};
struct B : A {
int baz[10];
};
struct C : A {
int baz[20];
};
其中derived
可以是A的任何继承结构(B或C(,但不能是A,而不改变原型struct foo
?例如,是否可以执行以下操作?
void func(void)
{
struct B b;
struct foo foo;
foo.derived = b;
}
struct A {
int val;
virtual ~A() = 0; // so nobody can instantiate A alone.
};
inline
A::~A() = default; // the destructor HAS to be defined.
struct foo {
int x;
int y;
std::unique_ptr<A> derived;
};
然后其他的都一样。。。和使用:
foo foo_v; foo_v.derived = std::make_unique<B>();
请注意,我已经去掉了C语言元素,使其成为纯C++。我也会清理这些,让它们更有凝聚力。在上面的代码中,x和y没有初始化,这有意义吗?可能不会,所以应该有一个构造函数来强制提供它们,将它们设置为初始值,或者两者兼而有之。
相关文章:
- 继承函数的重载解析
- 函数向量_指针有不同的原型,我可以构建一个吗
- 继承期间显示未知行为的子类
- 头文件-继承c++
- 为什么在保护模式下继承升级不起作用
- 通过继承类使用来自不同命名空间的运算符
- 子目录是否继承属性,例如add_definitions,include_directories和父Cmakelist.t
- 混合组合和继承的C++问题
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 从类继承时,继承的类是否会通过父类重新定义继承的变量
- 公共与私人继承
- 如何创建从同一类继承的不同对象的向量
- 如何从另一个文件继承私有成员变量和公共函数
- 在模板基类中为继承类中的可选重写生成虚拟方法
- 从虚拟公共模式下的模板类继承的类的原型
- 继承基类,定义基类的原型方法,但从第三个对象调用子类的方法
- 从两个类继承的类,具有相同的函数原型,彼此冲突
- 错误:类的原型与任何类 - 继承都不匹配
- 类继承和类原型的问题
- 调用没有这些虚拟原型的继承类的一个方法