C++ c++;CoW、继承类和变量共享数据的设计模式?

C++ c++;CoW、继承类和变量共享数据的设计模式?,c++,design-patterns,C++,Design Patterns,我已经设计了一个写基类的副本。该类保存共享数据模型/CoW模型中所有子级所需的默认数据集 派生类还具有仅与它们相关的数据,但应在该派生类的其他实例之间进行转换 我正在寻找一个干净的方法来实现这一点。如果我有一个基类FooInterface,其中包含共享数据FooDataPrivate和派生对象FooDerivated。我可以创建一个FooDerivedDataPrivate 底层数据结构不会影响公开的getter/setters API,因此它与用户如何与对象交互无关。我只是想知道这是这种情况下

我已经设计了一个写基类的副本。该类保存共享数据模型/CoW模型中所有子级所需的默认数据集

派生类还具有仅与它们相关的数据,但应在该派生类的其他实例之间进行转换

我正在寻找一个干净的方法来实现这一点。如果我有一个基类FooInterface,其中包含共享数据FooDataPrivate和派生对象FooDerivated。我可以创建一个FooDerivedDataPrivate

底层数据结构不会影响公开的getter/setters API,因此它与用户如何与对象交互无关。我只是想知道这是这种情况下的典型MO,还是有更好/更干净的方法

我感兴趣的是,我看到了私有数据类之间继承的潜力。例如,FooDerivedDataPrivate:public FooDataPrivate,但我没有看到在我的派生类中利用这种多态性的方法

class FooDataPrivate
{
public:
  Ref ref; // atomic reference counting object
  int a;
  int b;
  int c;

};

class FooInterface
{
public:
  // constructors and such
  // ....

  // methods are implemented to be copy on write.
  void setA(int val);
  void setB(int val);
  void setC(int val);

  // copy constructors, destructors, etc. all CoW friendly
private:
  FooDataPrivate *data;

};

class FooDerived : public FooInterface
{
public:
  FooDerived() : FooInterface() {}

private:
  // need more shared data for FooDerived
  // this is the ???, how is this best done cleanly?
};

这是C++的一个.