2012-09-28 31 views
1

可能重复:
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; 
    }  
}; 
+0

关于转发声明,请参见[本答案](http://stackoverflow.com/a/3110269/1641234)。 –

回答

3

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

+0

啊......完全忘了这个!谢谢! – AvatarBlue