我遇到了具有如下函数定义的代码:
void VisitorPrimitiveSelector::visitObjComposite(class Object3DComposite& comp);
参数列表中的class
字到底有什么用?我以前从未见过这种东西,而且似乎也无法在线找到任何东西。
答案 0 :(得分:2)
这只是编写Object3DComposite& comp
的另一种方式。除非有一个名为class
的东西,它也不是一个类,否则不需要Object3DComposite
关键字。然后,class
显然不需要告诉编译器期望使用哪个具有相同名称的符号。
答案 1 :(得分:2)
它是Object3DComposite类的前向声明
答案 2 :(得分:1)
追溯到C时代,
struct foo {};
没有引入名为foo
的类型。相反,它引入了struct foo
。
C程序员通过
解决了这个问题typedef struct foo{}foo_t;
引入了foo_t
作为struct foo
的别名。
(在大多数情况下)您不再需要它,因为在C ++中,struct foo
引入了一个名为foo
的类型。尽管如此,旧语法仍然有效。
class
大多只是struct
,具有不同的默认隐私规则。