我刚从 WinXP 升级到 7,我不得不将 Windows SDK 添加到我的项目中以使其编译。
到目前为止一切顺利,但我的第二个项目遇到了障碍,“PlayerState”在我的项目中用作类,在 Windows SDK (effects.h) 中用作枚举,这显然会产生错误(错误 C2011:' PlayerState' : 'struct' 类型重定义)。
解决这个问题的最佳方法是什么?
我想到了:
- 重命名,但我会打破命名惯例(这确实是玩家的“状态”)
- 把它放在一个命名空间中,但是我应该把每个类都放在一个命名空间中,这意味着很多工作
是否有任何其他方式(可能是特殊的 MSVC 2010 vay)排除该文件或某种“取消定义”枚举或其他方式?
[edit] 答案是,响亮而清晰,命名空间! +1,谢谢大家!
最佳答案
命名空间,毕竟这就是它的用途。分组并避免名称冲突。如果您遍历代码库并将所有内容都放在命名空间中,这不会有什么坏处。这是您应该一直在做的事情。
关于c++ - 在 C++ 中消除名称冲突的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8363047/