如何用声明来克服循环依赖?

时间:2012-09-28 03:08:29

标签: c++

  

可能重复:
  How can I declare classes that refer to each other?

以下是.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;
    }    
};

1 个答案:

答案 0 :(得分:3)

在文件顶部添加class SP;。这是forward declaration,它告诉编译器SP是什么,但没有描述它的实现。