我正在尝试实现双重调度模式,但我得到了一个循环依赖,我无法通过前向声明解决(因为它已在此问题链接中解决)。
下面是我的问题的一个例子:
标题 1:
class Object
{
virtual void dispatchAdd(Collection& c) const = 0;
};
class Blockage: Object
{
virtual void dispatchAdd(Collection& c) const
{
c.add(*this);
}
};
class Boundary: Object
{
virtual void dispatchAdd(Collection& c) const
{
c.add(*this);
}
};
标题 2:
class Collection
{
public:
void add(const Blockage& b)
{ ... }
void add(const Boundary& b)
{ ... }
...
private:
boost::unordered_set<Boundary> m_boundaries;
boost::unordered_set<Blockage> m_blockages;
}
我无法在标题 2 中转发声明Boundary
和,因为我需要一个完整的类型才能使用. 有什么建议可以解决这个问题吗?Blockage
boost::unordered_set