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