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