如何使用C++中的指针正确设计类的层次结构

Jul*_*len 0 c++ architecture pointers

我正在努力提高我对程序架构的了解,最近向我提出了一个与我最近发布的指针问题相关的问题.

问题在于,在一个简单的层次结构中,你有一个A类,其指针指向B类,最后一个指向C类.不要混淆与面向对象编程的继承属性,但基本上我所说的是C类是B级的孩子,B级是A级的孩子.

关键是我希望能够通过指针直接从A类访问C类(类比中的孙子).其他一些成员指出这是糟糕的设计,主要是因为如果从类B集合中删除类C的实例会在类A集合中留下指向"无"的指针.那么,这是如何正确建模的?

非常感谢!

Julen.

Cos*_*ert 5

不幸的是,你只是重新发明轮子.改变你的方法,所有指针 - 东西都可以自动实际管理.

如果可能,请使用合成.让对象class A持有一个对象class B,它将拥有一个对象class C.这种明显而简单的方法可以为您节省大量时间,使您的应用程序结构更好,更"干净".

如果您的类可以被视为相同类型的对象(例如,如果它们共享相同的接口),那么派生您的Cfrom B并派生BA.在那之后,你将不得不考虑他们的共享接口 - 就virtual functions你的而言class A,它就像一个基类.这实际上是一个棘手的时刻,但是一旦你习惯了这种方式来规划你的界面,你就不会想到以其他方式做到这一点.

另外要说的是,即使看起来"你当前的问题无法通过动态多态建模"或者"只是想不出一个合适的接口",再试一次.并且不要试图发明新的程序架构构建方法,而只是习惯现有的方法.