0

派生クラスのインスタンスであるメンバーを持つ基本クラスを持つことはできますか? 派生クラス定義を前方宣言またはインクルードするにはどうすればよいですか? それとも、私がこれを行うべきである別の方法はありますか?

// base.h

class DerivedClass;  // Is forward declaration sufficient?

class Base {
 public:
  virtual ~Base();
  virtual void DoStuff() = 0;
  void DoSomethingWithD() {
    d_.Foo();
  }
 protected:
  DerivedClass d_;
};

// derived.h

#include "base.h"

class Derived : public Base {
 public:
  Derived();
  void DoStuff();
  void Foo();
 private:
  Derived(const Derived&);
  void operator=(const Derived&);
};

// other_derived.h

#include "base.h"

class OtherDerived : public Base {
 public:
  OtherDerived();
  void DoStuff();
 private:
  OtherDerived(const OtherDerived&);
  void operator=(const OtherDerived&);
};
4

1 に答える 1