我有以下枚举:
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
答案 0 :(得分:0)
根据错误消息,anme CTEnums
已被占用。
尝试使用原始文件名的第一个版本,并将CTEnums
更改为其他内容。