继承前向声明的struct?

use*_*891 2 c++ inheritance forward-declaration

我不能继承只是前向声明的结构吗?

例:

struct A;
class B : public A {};
Run Code Online (Sandbox Code Playgroud)

我收到错误"基类未定义".

你能帮我解决这个问题吗?

谢谢

Ego*_*rov 5

你不能这样做.首先,当您从结构或类继承时,必须知道其大小.但是如果结构只是向前声明,编译器无法确定大小.并且编译器还需要知道超类具有哪种类型的成员,例如,是否存在任何virtual函数等.

  • 实际上,类型必须是完整的.为了确定有效的类布局,成员初始化,构造函数的虚拟性,重复基础的虚拟性,名称隐藏/模糊性等,不仅需要知道大小,还需要整个类声明. (4认同)