C++
如何将内部(嵌套)类的定义放在其外部(封闭)类的定义之外,其中外部类至少有一个内部类的实例作为数据成员?我搜索了但我发现的最相关的 SO 答案,源文件中的嵌套类定义,没有外部类具有内部对象作为数据成员的示例。我遵循了这个答案,就在外部类的定义中声明但不定义内部类而言,但我的代码仍然被破坏:
struct Outer
{
struct Inner;
Inner myinner;
Outer() : myinner(2) {}
};
struct Outer::Inner
{
Inner(int n) : num(n) {}
int num;
};
int main()
{
Outer myouter;
}
它给出了error C2079: 'Outer::myinner' uses undefined struct 'Outer::Inner'
VC11中的错误。
为什么损坏的代码没有与' 定义Inner
中定义的版本等效的效果,就像下面的工作代码一样?Outer
struct Outer
{
struct Inner
{
Inner(int n) : num(n) {}
int num;
} myinner;
Outer() : myinner(2) {}
};