相关疑难解决方法(0)

类定义后是否允许类声明?

我刚读完这个答案,这让我很困惑.

我总是认为类声明可以出现很多次,只有定义只能存在一次,如:

/*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上,我发现了上面的一个例子,而不是嵌套的:

struct s { int a; };
struct s; // does nothing (s already defined in this scope)
void g() {
    struct s; // forward declaration of …
Run Code Online (Sandbox Code Playgroud)

c++ language-lawyer

5
推荐指数
1
解决办法
392
查看次数

标签 统计

c++ ×1

language-lawyer ×1