【发布时间】:2013-11-21 00:20:07
【问题描述】:
C++
如何将内部(嵌套)类的定义放在其外部(封闭)类的定义之外,其中外部类至少有一个内部类的实例作为数据成员?我进行了搜索,但我找到的最相关的 SO 答案 Nested Class Definition in source file 没有外部类具有内部对象作为数据成员的示例。我遵循了这个答案,就在外部类的定义中声明但不定义内部类而言,但我的代码仍然被破坏:
struct Outer
{
struct Inner;
Inner myinner;
Outer() : myinner(2) {}
};
struct Outer::Inner
{
Inner(int n) : num(n) {}
int num;
};
int main()
{
Outer myouter;
}
它在 VC11 中给出错误error C2079: 'Outer::myinner' uses undefined struct 'Outer::Inner'。
为什么损坏的代码没有与在Outer 的定义中定义Inner 的版本等效的效果,就像在下面的工作代码中一样?
struct Outer
{
struct Inner
{
Inner(int n) : num(n) {}
int num;
} myinner;
Outer() : myinner(2) {}
};
【问题讨论】:
标签: c++ nested inner-classes nested-class outer-classes