为什么这段代码不能编译?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
编译器报告:
enum declarations allowed only in static contexts.
但是当我把Enum放在A级时,一切都还好。
这是非常令人惊讶的。我不认为我在C ++中遇到这个问题。
答案 0 :(得分:11)
你可以通过使B静态来解决这个问题:
static class B { ...
这更能反映C ++对嵌套类的作用。默认情况下(不包含static
),B的实例包含对A实例的隐藏引用。
可以在Java inner class and static nested class找到对差异的一个很好的解释。