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...
};

私は最初の方法を使用してきましたが、2番目の方法を考えました(これはよりクリーンで読みやすいです)。考え?

4

2 に答える 2

1

ネストされたクラスを使用することをお勧めします。

  • 入れ子になったクラスがfriend含まれているクラスのプライベート メンバーにアクセスする必要がある場合 (たとえば、対応するコンテナー クラスのメンバーにアクセスする反復子クラスに該当する場合があります)
  • または、ネストされたクラスが包含クラスのプライベート実装の詳細であり、包含クラスのパブリック API を介して他のクラスに公開されていない場合
于 2012-12-10T13:18:38.097 に答える
1

これは「どちらが優れているか」という問題ではなく、どのデザインが要件に適合するかという問題です。解決しようとしている問題の説明がなければ、賢明な答えは得られません。

于 2012-12-10T13:16:58.933 に答える