C++中是否存在像Java一样的静态嵌套类?

I.M*_*Mac 6 c++

我经常用java编写,我对C++中的静态嵌套类有点困惑.

我正在尝试声明一个静态类,但是我收到一个错误:

class D
{
    public:

    static class Listener
    {
        public :

        void foo()
        {
            cout << "foo" <<endl;
        }
    };

};
Run Code Online (Sandbox Code Playgroud)

我得到了以下错误

"只能为对象和函数指定存储类"

(我正在使用在线编译器).

Chr*_*ckl 16

正确的术语是"静态嵌套类".

Java中的静态嵌套类就像C++中的普通嵌套类一样,所以只需删除static它就可以了.

像Java这样的非静态类比在C++中模拟起来会有点困难,因为没有编译器魔法可以自动提供外部类的上下文.您必须通过在内部类中存储对外部类的引用,在内部类的构造函数中初始化它,以及通过引用显式访问外部类的成员来解决该问题.

  • 在Java中没有"静态内部"类这样的东西. (2认同)