我已经搜索了一些关于循环依赖关系的内容,但在全局变量方面还没有找到答案。以下是发生的事情,名称稍微简化了一点:
- 我的全局变量文件(
globals.h
)具有#include A.h
A.h
具有#include B.h
B.h
具有对全局const int Foo
的引用,该引用在globals.h
中声明
这给了我一个错误,即未在作用域中声明const int Foo
。如果我理解正确的话,这是因为#include A.h
是在定义extern const int Foo
之前运行的。
解决这个问题的最佳方法是什么?如果我把extern const int Foo
放在B.h
中的类声明之前,这就修复了它,但这不是错误的使用extern
的方式吗,因为它已经用于globals.h
中的那个变量了?有更好的方法吗?
我想,如果有更好的类设计,这可能根本不是问题,但目前,这些依赖关系是无法避免的。。。只是寻求一些建议。非常感谢!!
附言:从这篇文章中可以明显看出,我不是C++专家(我的C++经验都与爱好有关),我很乐意听到任何相关的建议,以避免将来出现这种问题。
如果Foo是一个静态常量int,我会重构你的.h文件,这样你就可以在一个公共的地方获得静态常量。注意不要两次定义同一个变量。
否则,让头声明它是外部的,并将定义放在适当的.cpp文件中就可以了。