在C++中,对象通过this引用自身。

但是,内部类的实例如何引用其封闭类的实例?

class Zoo
{
    class Bear
    {
        void runAway()
        {
            EscapeService::helpEscapeFrom (
                this, /* the Bear */
                ??? /* I need a pointer to the Bear's Zoo here */);
        }
    };
};

编辑

我对非静态内部类的工作方式的理解是Bear可以访问其Zoo的成员,因此它具有指向Zoo的隐式指针。在这种情况下,我不想访问成员;我正在尝试获取该隐式指针。

最佳答案

与Java不同,C++中的内部类没有隐式引用其封闭类的实例。

您可以通过传递实例进行模拟,有两种方法:

传递给方法:

class Zoo
{
    class Bear
    {
        void runAway( Zoo & zoo)
        {
            EscapeService::helpEscapeFrom (
                this, /* the Bear */
                zoo );
        }
    };
};

传递给构造函数:
class Zoo
{
    class Bear
    {
        Bear( Zoo & zoo_ ) : zoo( zoo_ ) {}
        void runAway()
        {
            EscapeService::helpEscapeFrom (
                this, /* the Bear */
                zoo );
        }

        Zoo & zoo;
    };
};

关于c++ - 如何从C++内部类引用封闭实例?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6198224/

10-10 23:04