小编bou*_*bou的帖子

C++嵌套类在分离的头文件中

我想将嵌套类Inner从Outer.h移到一个单独的头文件中:

class Outer{
    class Inner{
    public:
        Inner(Outer& o){}
    };

public:
    Outer():i(*this){}
    ~Outer(){}
    Inner i;
};
Run Code Online (Sandbox Code Playgroud)

而对于'main.cpp'

#include "Outer.h"
int main(){
    Outer o;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是一旦我尝试将Inner类放在一个像这样的分隔头中:

class Outer{
    class Inner;

public:
    Outer():i(*this){}
    ~Outer(){};
    Inner i;
};
Run Code Online (Sandbox Code Playgroud)

并将Inner类放在'Inner.h'中,如下所示:

class Outer::Inner{
public:
    Inner(Outer& o){}
};
Run Code Online (Sandbox Code Playgroud)

并添加到主#include'Inner.h'中,如下所示:

#include "Outer.h"
#include "Inner.h"
int main(){
    Outer o;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我从编译器得到以下错误:Outer.h:10:9:错误:字段'i'的类型不完整.

我或多或少地了解为什么,但我找不到问题来实现我想做的事情.

c++ nested

8
推荐指数
1
解决办法
4904
查看次数

标签 统计

c++ ×1

nested ×1