我经常用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++中模拟起来会有点困难,因为没有编译器魔法可以自动提供外部类的上下文.您必须通过在内部类中存储对外部类的引用,在内部类的构造函数中初始化它,以及通过引用显式访问外部类的成员来解决该问题.