枚举不是类或命名空间名称

时间:2015-11-19 04:14:17

标签: c++11

我有以下枚举:

struct CTEnums
{
    enum class HashType : int
    {
        SHA1 = 0,
        SHA256 = 1,
        SHA384 = 2,
        SHA512 = 3,
        MD5 = 4
    };

    enum class KeySize : int
    {
        KeySize1 = 0,
        KeySize224 = 1,
        KeySize256 = 2,
        KeySize384 = 3,
        KeySize512 = 4
    };
};

我有一个名为Encryption的类,它带有一个函数:

 void SetHash(CTEnums::HashType hash_type);

我一直收到错误:

  

C2653:CTEnums不是类或命名空间名称
  C2061:语法错误:identifer HashType

我还尝试了以下版本的枚举:

struct CTEnums
{
    enum HashType
    {
        SHA1 = 0,
        SHA256 = 1,
        SHA384 = 2,
        SHA512 = 3,
        MD5 = 4
    };

    enum KeySize
    {
        KeySize1 = 0,
        KeySize224 = 1,
        KeySize256 = 2,
        KeySize384 = 3,
        KeySize512 = 4
    };
};

但我得到同样的错误。我正在使用Qt和VS2013,它让我疯狂

更新

好的我将我的文件从enums.h重命名为ctcodes.h并修改了以下代码:

enum class HashType : int
{
    SHA1 = 0,
    SHA256 = 1,
    SHA384 = 2,
    SHA512 = 3,
    MD5 = 4
};

enum class KeySize : int
{
    KeySize1 = 0,
    KeySize224 = 1,
    KeySize256 = 2,
    KeySize384 = 3,
    KeySize512 = 4
};

enum class OSType : int
{
    Windows = 0,
    OSx = 1,
    Linux = 2
};

现在它有效。让我想知道我的头文件名是否存在冲突。它被称为enums.h

1 个答案:

答案 0 :(得分:0)

根据错误消息,anme CTEnums已被占用。

尝试使用原始文件名的第一个版本,并将CTEnums更改为其他内容。