模糊的标题,但是用 100 个字符来解释我需要什么有点困难。我有一张地图,每个地图都包含不同类型的派生对象。看起来像这样:
/* will use smart pointers in the final product, just using plain
pointers to simplify the example.*/
// The long is a type id and the string is a unique identifier
std::map<long, std::map<std::string, Node *> > m_NodeList;
这些节点中的每一个都包含一个或多个组件,具体取决于它们的特定类型。这些组件位于地图中的不同地图中。看起来像这样。
std::map<long, std::map<std::string, Component *> > m_ComponentList;
这种交互的一个例子是这样的:
class Mesh :
public Component
{
// some graphics api stuff
};
class Vector3 :
public Component
{
public:
float x, y ,z;
};
class Graphics :
public Node
{
public:
Node(Vector3 & vec, Mesh & model) :
m_Pos(vec),
m_Model(model)
{}
Vector3 & m_Pos;
Mesh & m_Model;
};
我已经解决了很多类型的魔法,因为我以前做过类似的事情,但现在我遇到了依赖问题。我希望组件和节点能够在任何给定时间从系统中删除。然而,节点总是依赖于组件的存在。逻辑是这样的,如果一个节点被删除,没有变化,如果一个组件被删除,我还需要删除所有依赖它的节点。假设这两个映射都存在于一个对象调用 Mediator 中。你们将如何保留依赖项列表,以便中介知道也要销毁某些节点?另外,如果你想以不同的方式组织这个计划,我也想听听。提前致谢!
编辑:如果你能想到一个更相关的标题,谢谢-_-