在我正在研究的C++项目中,我有一个标志值,它可以有四个值.这四个标志可以组合在一起.标志描述数据库中的记录,可以是:
现在,对于我希望保留此属性的每条记录,我可以使用枚举:
enum { xNew, xDeleted, xModified, xExisting }
Run Code Online (Sandbox Code Playgroud)
但是,在代码的其他地方,我需要选择哪些记录对用户可见,所以我希望能够将其作为单个参数传递,如:
showRecords(xNew | xDeleted);
Run Code Online (Sandbox Code Playgroud)
所以,似乎我有三个可能的附件:
#define X_NEW      0x01
#define X_DELETED  0x02
#define X_MODIFIED 0x04
#define X_EXISTING 0x08
Run Code Online (Sandbox Code Playgroud)
要么
typedef enum { xNew = 1, xDeleted, xModified = 4, xExisting = 8 } RecordType;
Run Code Online (Sandbox Code Playgroud)
要么
namespace RecordType {
    static const uint8 xNew = 1;
    static const uint8 xDeleted = 2;
    static const uint8 xModified = 4;
    static const uint8 xExisting = 8;
}
Run Code Online (Sandbox Code Playgroud)
空间要求很重要(字节与整数),但并不重要.使用定义我失去了类型安全性,并且enum我失去了一些空间(整数),并且当我想要进行按位操作时可能需要进行转换.随着 …
我有一个场景,我有播放器类型ARCHER,WARRIOR和巫师.我应该在玩家类中使用什么?类型或枚举的String变量?为什么枚举和为什么Constant Strings.请帮助理由.
我有这个打字稿代码(打字稿游乐场):
const enum Something {
  None = 0,
  Email = 10,
  All = 20
}
const enum Other{
  Email = 10;
  Value = 15;
}
interface Foo {
  prop: Something
}
const value2: Something = Something.None;
// Why can 15 be assigned if it's not in the enum?
const value: Something = 15;
// This errors:
const otherValue: Something = 'asdf';
const value3: Something = Something.NotExists;
const value4: Something = Other.Value;
const value5: Something = Other.Email;
Run Code Online (Sandbox Code Playgroud)
我不明白为什么在这种情况下 15 …