1

这就是场景。我有一个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...
};

我一直在使用第一种方法,但后来我想到了第二种方法(更简洁,更具可读性)。想法?

4

2 回答 2

1

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

于 2012-12-10T13:16:58.933 回答
1

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

  • 如果嵌套类需要friend访问包含类的私有成员(例如可能是迭代器类,它访问相应容器类的成员)
  • 或者如果嵌套类是包含类的私有实现细节,它不会通过包含类的公共 API 暴露给其他类
于 2012-12-10T13:18:38.097 回答