C++对象之间的通信

发布于 2024-12-06 10:40:57 字数 273 浏览 0 评论 0原文

我确信以前已经问过(并回答过)这种问题,所以如果是的话,请将我链接到之前的讨论...

在 C++ 中,假设我有一个 ClassA 类型的对象,其中包含一个类型为私有成员变量的对象B 类。我将如何在 ClassB 中调用对 ClassA 对象的引用?

我正在使用观察者设计模式,其中 ClassA 对象是“主体”,而 ClassB 中的对象(例如 ClassC 类型)是 ClassA 对象的“观察者”。因此,当在 ClassB 中初始化对象 ClassC 时,其参数之一需要是对其“主题”对象的引用。

I'm sure this kind of question has been asked (and answered) before, so please link me to a previous discussion if so...

In C++, say I have an object of type ClassA which includes a private member variable object of type ClassB. How would I go about calling a reference to the ClassA object within ClassB?

I am using the Observer Design Pattern where the ClassA object is the 'subject' and an object within ClassB, say of type ClassC, is an 'observer' of the ClassA object. Therefore when initialising object ClassC within ClassB one of its parameters needs to be a reference to its 'subject' object.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

孤君无依 2024-12-13 10:40:57

简而言之:

struct A;

struct B : C {
  B(A &a) : c(a) { }

  C c;
};

struct A {
  A() : b(*this) { }

  private:
    B b;
};

B 不能仅仅因为它是 A 的成员而获得对 A 的特殊访问权限。您必须显式传递引用。

Briefly:

struct A;

struct B : C {
  B(A &a) : c(a) { }

  C c;
};

struct A {
  A() : b(*this) { }

  private:
    B b;
};

B gets no special access to A just because it is a member. You must explicitly pass the reference.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文