"newbiecpp" <ne*******@yahoo.com> wrote...
Java can declare a static nested class. Does C++ have same thing like?
class Outer {
public:
static class Inner {
...
};
...
};
I can compile this code. But my question is what's difference between
Java and C++ in term of static nested class? In which case, it is good design
to use static nested class?
In Java, when you create a nested class, its instance is automatically
created and added to the object or to the class (if the nested class is
declared static), at least that's how I remember it. In C++ when you
declare a nested class, you only define a type, there is no instance
involved. In order to declare/define an instance, you need to explicitly
do that:
class Outer {
public:
class Inner {
...
};
Inner non_static_member;
static Inner static_member;
};
Hence, there is no need to declare the type 'static', you do that when
you declare the actual data member.
So, the answer could be "no, C++ can't do that, there are no static
types only static objects", or, if you prefer, "yes, C++ can do that,
you just have to declare a static data member of the type Inner in the
'Outer'". Pick whichever answer you like better.
Victor