对象之间的C ++通信

时间:2011-09-24 14:36:30

标签: c++ object observer-pattern

我确信此类问题之前已被提及(并已回答),所以如果是这样,请将我与之前的讨论联系起来......

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

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

1 个答案:

答案 0 :(得分:1)

简言之:

struct A;

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

  C c;
};

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

  private:
    B b;
};

B因为是会员而无法获得对A的特殊访问权限。您必须明确传递参考。