哪个更好,一个班级或一个单独的班级?

时间:2012-12-10 13:13:47

标签: c++ class subclass

这就是场景。 我有一个Layer类,我想创建一个子类,让我们调用这个ParentLayer类。 ParentLayer类将有另一个Layer子类,称为ChildLayer类。哪种方法最好?

ChildLayer内宣布ParentLayer为私人类。

// LayerSubclass.h
#include "Layer.h"

class ParentLayer : public Layer {
private:
   class ChildLayer : public Layer {
   private:
       // ChildLayer members
   public:
       // Stuff...
   };

   ChildLayer _childLayer;

public:
   // Stuff...
};

将ChildLayer声明为同一个头文件中的单独类。

// LayerSubclass.h
#include "Layer.h"

class ChildLayer : public Layer {
private:
    // ChildLayer members
public:
    // Stuff...
};

class ParentLayer : public Layer {
private:    
   ChildLayer _thisChild;

public:
   // Stuff...
};

我一直在使用第一种方法,但后来我想到了第二种方法(更干净,更易读)。想法?

2 个答案:

答案 0 :(得分:1)

这不是“什么更好”的问题,而是一个适合您要求的设计问题。如果没有您要解决的问题的描述,则无法给出合理的答案。

答案 1 :(得分:1)

我可能更喜欢使用嵌套类:

  • 如果嵌套类需要friend访问包含类的私有成员(例如,对于迭代器类,可以访问相应容器类的成员)
  • 或者,如果嵌套类是包含类的私有实现细节,则不通过包含类'public API
  • 向其他类公开