包含类的Contained类调用成员函数如何 - C++中的组合

Man*_*rma 0 c++ oop ooad

这是从C++角度来看的一般设计问题.我有一个容器类,其中包含其他2个类的对象.

从容器类我们可以调用包含的类对象的方法"因为我们有包含的类对象的句柄",例如objContainedClass1-> SomeMthod();

但我想知道包含的类对象(objContainedClass1)将如何访问容器类的方法.

我可以想到以下方法:

  1. 容器类对象将指向自身的指针(this指针)传递给包含的类构造函数.使用此指针,包含的类可以访问容器类的方法.

  2. 将容器类中的某些函数设置为static.

实现这个的更多想法?

谢谢

sto*_*tal 6

不要,通常一个类必须知道它的容器是不好的设计.通常这意味着你违反了单一责任原则.

  • 我真的没有看到双向关联与单一责任原则有什么关系.我可以想到许多情况,如果不是强制性的话,双向关联是有用的.例如,在树结构(参见Composite)中,在节点中引用父节点通常很有用. (2认同)