可以以某种方式从私人课程中检索"host instance"吗?
Can one somehow retrieve the "host instance" from a private class?
我有以下设置(简化(:
class A {
public:
void doBar() { B b; b.bar(); }
private:
int foo;
class B {
public: void bar() { /* do somehting with foo */ }
};
};
现在,VS告诉我:
非静态成员引用必须相对于特定对象
好吧,听起来很合理。然而,由于这个类B
对A
是私有的,我可以确信它永远不会在A
的(特定(实例的实例之外使用(好吧,A
的静态方法是个例外(。
那么,底线是,是否有机会从B
的方法中获得A
的当前实例,即B b
实例化的实例?我特别想找一个干净的解决方案,因为否则我只会传递一个推荐信。
在另一个类中声明一个类不会创建"包含",只会创建类声明的范围。一般来说,B
对象不包含在A
对象中,除非您通过相互引用的方式使它们包含在内。
所以,不;不存在B
能够确定A
的哪个实例创建它的机制,因为这种情况没有什么特别之处。
想想看:在您的示例中,B
对象是在堆栈上创建的,但它可能是堆分配的。A
对象也可能是用"new"在堆上创建的,或者是在堆栈上创建的、或者是在自定义堆上创建,或者是通过"placement new"创建的。内存中的两个对象之间根本没有任何关系。
相关文章:
- 使用VerQueryValue检索应用程序的文件描述
- 是否可以从格式字符串中检索"width"
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 如何在QByteArray中放置和检索位字段而不会感到痛苦?
- 如何在Qt中从数据库中检索二进制数据?
- 如何从C++代码中检索 QML 的文本字段中的文本?
- 从 opencv c++ 中的矢量中检索固定的帧数
- 如何在不等待检索的情况下获取C++中的内存位置?
- 如何在 QTreeWidget 中检索特定项目的 mimeData?
- C++从字符串中检索几行
- 在数据库中插入和检索矩阵
- 两个垫子的 OpenCV 数据是相同的,但使用 Mat::at 检索时的值已损坏
- 使用 const char* 键映射 C++ 检索空值
- 打印从SQLite3数据库检索的数据C++与命令行中相同的方式
- 如何检索指向在单独线程上运行的函数的移动指针?
- 如何检索 Steamwork SDK 的当前版本
- 通过 host() 从 af::array 检索数据会导致错误的数据
- 无法从类中检索值
- 初始化类中的指针数组,并在另一个类中检索它
- 可以以某种方式从私人课程中检索"host instance"吗?