重新定义错误

use*_*625 2 c++

我正在将用于死锁检测的MFC应用程序转换为Simple控制台应用程序.在这个过程中,我发现了很多错误

错误C2365:'CmdLockMutex':重新定义; 以前的定义是'枚举'

我无法删除此错误.如果有人可以在这方面帮助我.

小智 5

好4年后到OP这里是你的答案......

问题: 对于无范围的枚举,您可以遇到以下情况:

enum Suit { Diamonds, Hearts, Clubs, Spades };
enum Tools { Picks, Shovels, Spades, Hammers }; // error C2365: 'Spades' : 
                                                // redefinition; previous definition was 'enumerator'
Run Code Online (Sandbox Code Playgroud)

解决方案:

Scoped enums solve this problem:
enum class Suit { Diamonds, Hearts, Clubs, Spades };
enum class Tools { Picks, Shovels, Spades, Hammers };
Run Code Online (Sandbox Code Playgroud)

资料来源: MSDN

在枚举定义中使用关键字class或struct表示每个枚举类型都是唯一的,并且与其他枚举类型不可比.除了这个优点之外,您还可以在不指定基础类型的情况下对它们进行前向声明(如果您打算进行前向声明,则可以使用未作用域的枚举).