在c++中消除名字冲突的最佳方式
visual Best way to remove collision of names in c++
我刚刚从WinXP升级到7,我必须将Windows SDK添加到我的项目中以使其编译。
到目前为止这么好,但我的第二个项目遇到了一个障碍,'PlayerState'在我的项目中作为一个类和在Windows SDK (effects.h)作为枚举使用,这显然会产生一个错误(错误C2011: 'PlayerState': 'struct'类型重新定义)。
解决这个问题的最好方法是什么?
我想到了:
- 重命名,但我将打破命名惯例(这真的是玩家的状态)
- 把它放在一个命名空间中,然后我应该把每个类放在一个命名空间中,这意味着很多工作
是否有其他方法(可能是特殊的MSVC 2010方式)排除该文件或某种"不定义"该enum或其他东西?
[edit]答案是,响亮而清晰,NAMESPACES!+1,谢谢大家!
命名空间,这就是它的作用。分组和避免名称冲突。如果您遍历代码库并将所有内容放在名称空间中,这不会有什么坏处。这是你一直以来就应该做的。
把它放在命名空间中,然后我应该把每个类放在命名空间,这意味着很多工作
嗯,基本上是艰难的。类无论如何都应该在命名空间中。如果你不把它们放在一个命名空间中,那么这是不可持续的,这只是偷工减料,这就是为什么。
显而易见的答案是:为所有项目使用自定义名称空间。它应该有一个唯一的名称,如果您喜欢更深入的名称空间
我会把它放在一个命名空间中。
不,这并不意味着你需要把所有的类放在一个命名空间中。只是说
using myns::PlayerState;
在适当的时候,或者如果那时冲突仍然会发生,
typedef myns::PlayerState myPlayerState;
<子>如果你真的想要快速和肮脏,做一个子>
#define PlayerState MyPlayerState
后的包括<windows.h>
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在C++中,将大的无符号浮点数四舍五入为整数的最佳方法是什么
- 实现无开销push_back的最佳方法是什么
- 写入位置0x0000000C时发生访问冲突
- 在c代码之间共享数据的最佳方式
- 使用std::source_location报告错误的最佳实践
- GL_SHADERSTORAGE_BUFFER位置是否与其他着色器位置冲突
- 派生类销毁的最佳实践是什么
- 使用cmake从源代码构建MySQL连接器/C++失败(与以前的声明冲突)
- 引发异常:读取访问冲突**dynamicArray**为0x1118235.发生
- 将寄存器设计成可由C和C++访问的外设的最佳实践
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- 使用QQuickFramebufferObject时同步数据的最佳方式是什么
- 在C++中向零方向近似的最佳方法
- 链表中写入访问冲突的未知原因
- 使用不同的CRT将新的C++代码与旧的(二进制)组件隔离开来的最佳方法是什么
- 从嵌套在std::映射中的std::列表中删除元素的最佳方式
- 在c++中消除名字冲突的最佳方式
- 在c++中命名命名空间的最佳方法//当名称冲突时该怎么做