我有一个场景图,所有节点都派生自一个基类AbstractNode
。AbstractNode
有一个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
子指针和子指针之间的问题。但是这些是否保证在两个实例之间保持不变?这对我来说似乎是一个很大的黑客......(而且我什至确信在子类化时不能保证这一点)
谢谢,
艾蒂安