C++ 结构原型中的继承

C++ 结构原型中的继承,c++,inheritance,c++98,C++,Inheritance,C++98,是否可以用C++表示这一点: structfoo{ int x; int-y; 结构A派生; }; 结构A{ int-val; }; 结构B:A{ int-baz[10]; }; 结构C:A{ int baz[20]; }; 其中,派生的可以是A(B或C)的任何继承结构,但决不能是A,而不更改原型结构foo? 例如,是否可以执行以下操作 void函数(void) { 结构B; 结构富富; foo.derived=b; } 结构A{ int-val; virtual~A()=0;//因此没有人可

是否可以用C++表示这一点:

structfoo{
int x;
int-y;
结构A派生;
};
结构A{
int-val;
};
结构B:A{
int-baz[10];
};
结构C:A{
int baz[20];
};
其中,
派生的
可以是A(B或C)的任何继承结构,但决不能是A,而不更改原型
结构foo
? 例如,是否可以执行以下操作

void函数(void)
{
结构B;
结构富富;
foo.derived=b;
}
结构A{
int-val;
virtual~A()=0;//因此没有人可以单独实例化。
};
内联
A::~A()=默认值;//必须定义析构函数。
结构foo{
int x;
int-y;
std::唯一的ptr派生;
};
然后剩下的都一样…使用:

foo foo_v;  foo_v.derived = std::make_unique<B>();
foo-foo\u v;foo_v.derived=std::make_unique();

注意,我已经消除了C语言元素,并使它成为纯C++。我也会把它们清理干净,让它们更有凝聚力。在上面的代码中x和y未初始化有意义吗?可能不是,所以应该有一个构造函数来强制提供它们,将它们设置为初始值,或者两者都设置为初始值。

派生的将始终是a。不是B,不是C。如果您希望派生多态性,则应该是指向a的指针/引用。如果它永远不能是a,那么为什么要提供a呢?
foo foo_v;  foo_v.derived = std::make_unique<B>();