我刚读完这个答案,这让我很困惑.
我总是认为类声明可以出现很多次,只有定义只能存在一次,如:
/*class Class {*/
class A; // (1) forward declaration
class A { // (2) definition, only once
int m;
};
class A; // (3) declaration again, legal?
class A a; // (4) declaration again, legal?
/*};*/
Run Code Online (Sandbox Code Playgroud)
从链接的答案:(3)(α和(4)),如果上面的代码是非法的嵌套类内部(定义和声明class A嵌套内部class Class).
在cppreference上,我发现了上面的一个例子,而不是嵌套的:
Run Code Online (Sandbox Code Playgroud)struct s { int a; }; struct s; // does nothing (s already defined in this scope) void g() { struct s; // forward declaration of …