Регистрация дочернего узла графа сцены & amp; конструктор копирования

У меня есть граф сцены, все узлы происходят из базового класса 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 и ребенок указывает. Но гарантированно ли они постоянны между двумя экземплярами? Это кажется мне большим взломом … (И я даже уверен, что это не гарантируется при создании подклассов)

Спасибо,

Etienne

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]