前向声明时"结构"和"类"关键字是否相同?

Are "struct" and "class" keywords the same when forward declaring?

本文关键字:quot 是否 关键字 结构 声明      更新时间:2023-10-16

过去我已经能够将一个类转发声明为结构体,反之亦然,或者像 C 中那样声明类型,例如:

void function(struct Foo* arg);
void function(class Foo* arg);

我认为出于此目的或正向声明的目的,它们是一回事,因为我多次听说结构体和类之间的唯一区别是默认访问说明符(结构是公共默认值,而类是私有的(。

我在我的一个类中的一个单词从"struct"更改为"class",我第一次看到它破坏了我的代码,链接器说它找不到在某处定义的这种类型的变量。这不允许以这种方式混合"结构"和"类"吗?

你有时会侥幸逃脱。而且你通常不会。

结构、类和命名空间是不一样的。在转发声明时,您绝对需要使用正确的关键字。

令我烦恼的是,因为没有合法的方式来转发声明嵌套类或结构。