【发布时间】:2020-05-01 20:03:05
【问题描述】:
是否可以用 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;
}
【问题讨论】:
-
派生将始终是 A。不是 B,不是 C。如果您想要派生的多态性应该是指向 A 的指针/引用。
-
如果它永远不可能是A,那为什么要提供A呢?
标签: c++ inheritance c++98