重新定义C ++问题,多头

时间:2013-10-18 20:46:55

标签: c++ compiler-construction header

我现在正在从事有很多课程的项目,有时我需要包括:

在Player.h中的CSConnection.h和CSConnection.h中的Player.h,现在我的编译器遇到了类名称没有定义的冲突。

标题有警惕,哪里有问题?

3 个答案:

答案 0 :(得分:1)

循环依赖只是糟糕的设计。如果您觉得让子/拥有对象“了解”其父/所有者的冲动,您应该将子传递给std :: function而不是对所有者的完全引用。

答案 1 :(得分:0)

转发声明 - 请参阅http://en.wikipedia.org/wiki/Forward_declaration 或者也许使用警卫'即#ifdef ...' - http://en.wikipedia.org/wiki/Include_guard

答案 2 :(得分:-1)

包含防护措施可防止文件在同一文件中被多次包含,但无法帮助您使用循环包含。您可能想要的是前向声明,但这取决于您的包含文件中的内容。