我可以省略非 public 继承以进行 类 的前向声明吗?

Can I omit non-public inheritance for forward-declaration of classes?

假设我有一段这样的代码:

// Foo.h:
class Incomplete; // the forward-declaration
class Foo {
  void bar(Incomplete&); // doesn't really matter
};
// Foo.cpp:
class Incomplete : private Baz {
};
void Foo::bar(Incomplete&) {
}

前向声明 类 是否符合 Foo.h 标准?如果是,从哪个语言版本开始? protected 继承也一样吗?

class 的前向声明需要 以省略继承。你不能写

class Incomplete : private Baz;

即使你愿意。

前向声明的目的是简单地指示特定名称空间中的特定名称引用 class。指定基础 class 是定义的一部分,因为它提供了有关 class 在内存中的布局的信息。