【发布时间】:2013-05-27 06:45:16
【问题描述】:
我有两个班级:
A类和B类
A 类在命名空间 Common::subnamespace1 下声明
类 B 在命名空间 Common::subnamespace2 下声明
A 类和 B 类都在命名空间 Common 下,但在不同的子命名空间下。
我的问题如下:
在B类头文件中包含A类就可以了 但是在 A 类中包含 B 类标头并在其中声明 B 类类型的成员会导致 编译错误未定义类型'B'。
我尝试过使用前向声明来避免循环依赖。但仍然存在错误。
实际上我很困惑我必须以什么顺序使用包含。
注意:我没有发布代码,因为我只是想知道相互声明或包含类的确切顺序或方法。
任何帮助将不胜感激。
【问题讨论】:
-
根据你如何使用彼此内部的类,前向声明应该可以正常工作。如果您不向我们展示某种代码,我们真的无法为您提供更多帮助。
-
你能发布你的代码吗?
-
@JoachimPileborg 好的。你能大致说出声明的顺序吗?我的意思是特别考虑命名空间。
-
没有一般规则。如果您的问题不能通过前向声明来解决,那么它比规范更复杂。在这种情况下,必须显示一些代码!
-
@CodeRider:命名空间没有什么特别之处。根据经验,在头文件中只包含那些绝对必须编译的头文件,否则使用前向声明。
标签: c++ class namespaces