0

我有一个场景图,所有节点都派生自一个基类AbstractNodeAbstractNode有一个registerChild成员函数:

registerChild<T>(string name, shared_ptr<AbstractNode> * childMember)

用于以标准方式注册子项(以便可以在基类接口中列出和修改它们)。它基本上将 name/child_pointer 对添加到哈希中。

因此,例如,类材料将像这样声明(缩短):

class Material : public AbstractNode
{
public:
    Material() { registerChild(&color); } 

private:
    std_shared<Color> color;
}

颜色是 AbstractNode 的另一个子类。

现在我想为 AbstractNode 实现一个复制构造函数。它必须复制注册子列表,并更新子成员指针。我想避免在所有基类中重新实现复制构造函数。这可能吗?

我曾考虑过处理指针偏移量、this子指针和子指针之间的问题。但是这些是否保证在两个实例之间保持不变?这对我来说似乎是一个很大的黑客......(而且我什至确信在子类化时不能保证这一点)

谢谢,

艾蒂安

4

0 回答 0