How come this code doesnt compile?
class A
{
class B
{
public enum Enum <-- this line
{
AD,
BC
}
}
}
Compiler reports:
enum declarations allowed only in static contexts.
But then when I put the Enum inside class A, everything is okay.
This is quite surprising. I dont think I have this problem in C++.
You can fix this by making B static:
static class B { ...
This mirrors more closely what C++ does with nested classes. By default (without static
), instances of B contain a hidden reference to an instance of A.
A good explanation of the differences can be found at Java inner class and static nested class.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With