如何通过声明克服循环依赖

How to overcome circular dependence with declarations?

本文关键字:循环 依赖 克服 声明 何通过      更新时间:2023-10-16

可能的重复项:
如何声明相互引用的类?

下面是我在 .h 文件中的代码。编译器会抱怨 CPattern 中有 SP 对象。我不能将 SP 的声明放在 CPattern 之上,因为它也在其中声明 CPattern 对象。我该如何解决这个问题?感谢您的帮助!

class CPattern
{
public:
    CPattern(void);
    ~CPattern(void);
    SP & Create(void);
};

class SP
{
private:
    const CPattern*    pPat;
public:
    SP()
    {
    }
    ~SP()
    {
        // pointer no longer requried
        delete pPat;
    }    
};

文件顶部添加class SP;。 这是一个前向声明,它告诉编译器什么是SP,但不描述它的实现。