gpt4 book ai didi

c++ - 能否以某种方式从私有(private)类(class)中检索 "host instance"?

转载 作者:太空狗 更新时间:2023-10-29 21:46:00 25 4
gpt4 key购买 nike

我有以下设置(简化):

class A {
public:
void doBar() { B b; b.bar(); }

private:
int foo;

class B {
public: void bar() { /* do somehting with foo */ }
};
};

现在,VS 告诉我:

A non static member reference must be relative to a specific object

嗯,好吧,这听起来很合理。但是,由于此类 BA 是私有(private)的,我可以确定它永远不会在 A< 的(特定)实例的实例之外使用(好的,A 的静态方法是个异常(exception))。

所以最重要的是,是否有机会从 B 的方法中获取 A 的当前实例,即 B b< 的实例 被实例化了吗?我特别在寻找一个干净的解决方案,否则我只会传递一个引用。

最佳答案

在另一个类中声明一个类不会创建“包含”,只会创建类声明的范围。您的 B 对象通常不包含在 A 对象中,除非您通过彼此保持引用的方式使它们如此。

所以,不; B 无法确定是哪个 A 实例创建了它,因为这种情况没有什么特别之处。

并考虑一下:在您的示例中,B 对象是在堆栈上创建的,但它可能是堆分配的。 A 对象也可能是使用“new”在堆上、堆栈上、自定义堆上或通过“placement-new”创建的。内存中的两个对象之间没有任何关系。

关于c++ - 能否以某种方式从私有(private)类(class)中检索 "host instance"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16190485/

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