gpt4 book ai didi

c++ - 如何从 C++ 内部类引用封闭实例?

转载 作者:可可西里 更新时间:2023-11-01 16:25:24 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com