我的项目中有一个基类,每个新创建的实例都会在另一个类的静态向量中存储指向自身的指针。不幸的是,这会产生循环依赖。
AInstList.cpp
class AInstList {
static std::vector<A*> AList; // List of pointers to instances
static void AddInst(A * newInst) { // Adds pointer to list
...
}
};
A.cpp
class A {
A() {
...
AInstList::AddInst(this);
}
};
注意:这是一个高度简化的示例。真实版本有几个&#34; A&#34;的子项,每个都有自己的实例向量和唯一ID。使用ids作为关键字将矢量保存在unordered_map中。这使得将对象指针排序为正确的向量变得容易。它允许添加&#34; A&#34;不修改其他类。
所有这一切的目的是能够轻松访问或更新给定类的所有实例,而无需查找它们。所需要的只是目标类&#39;标识。
那么......有没有其他方法可以避免循环依赖?值得改变吗?或者我应该只处理循环依赖?处理它的最佳方法是什么?