具有类Y对象的类X,从Y内访问X的公共变量

时间:2017-10-11 21:17:56

标签: c++ singleton global

给定一个自定义类X,其中包含另一个自定义类Y的实例向量,我想从一个实例中访问类X的公共变量Y 使用例如指向X实例的全局引用或指针。最终,类Z包含类X的实例(现在,一次只能有一个X实例,暗示使用单例)。

当然,这是实际问题的简化(有点抽象)版本,它包含更多具有某些依赖性的类(包括循环的)。现在,在有人开始“...不使用全局变量或指针,不要使用循环依赖,...” - 我知道,请假设我有充分的理由在这种情况下使用它们。一般来说,我也想避免它们。

最初的想法是让myX(在课程Z中定义)全局可用,但我不确定如何正确地做到这一点。如果我在myX内使用Y(例如使用extern),则Y必须了解类X。但是我不能在这里包含X的标题。我可以使用X的前向声明,但Y仍然不知道myObjectsY。显然,这不起作用。

X级

#include 'Y.h'    

class X {
  public:      
  vector<Y> myObjectsY;
};

Y类

class Y {
  // How to obtain e.g. the number of objects Y in the myObjectsY vector
};

Z级

#include 'X.h'

class Z {
  X *myX = new X();
};

1 个答案:

答案 0 :(得分:1)

只需在Yh中向前声明X并给Y指向X.如果在Y.cpp中包含Xh,则可以在Y.cpp中定义的函数中访问X的成员(因为X的定义在那一点)。