如何设置枚举类型变量的默认值?
How to set the default value of enum type variable?
如何设置枚举类型提示的默认值,我尝试将其设置为 0 或 1,或者什么都不设置,但我得到同样的错误?
enum tip {
pop,
rap,
rock
};
class Pesna{
private:
char *ime;
int vremetraenje;
tip tip1;
public:
//constructor
Pesna(char *i = "NULL", int min = 0, tip t){
ime = new char[strlen(i) + 1];
strcpy(ime, i);
vremetraenje = min;
tip1 = t;
}
};
您必须将其设置为 enum
值之一,例如:
Pesna(char *i = "NULL", int min = 0, tip t = pop)
// ^^^^^
另一种技术是使用 enum
本身声明的 Default
值并使用该值。如果您以后改变主意,默认值应该是什么,这会更容易:
enum tip {
pop,
rap,
rock,
Default = rap, // Take care not to use default, that's a keyword
};
Pesna(char *i = "NULL", int min = 0, tip t = Default)
// ^^^^^^^^^
不要将枚举视为 0 或 1 之类的数字(在某些情况下,它们甚至可以是有符号或无符号的)。在您引用它们的方式中,将它们更像是 class/struct。所以使用
tip = 1
不会成功,因为“小费”不是数字,而是它自己的实体。没有明确说明枚举从其他地方开始,比如
enum tip { pop = 7, ...}
第一个枚举将从 0 开始。因此您可以 cast/uncast 使用那些带有“数字”的表示,但我还是要小心。通常,在 class 的 public 命名空间中声明 class 特定的枚举会更好,例如
class Pesna {
public:
enum tip { pop, ...}
然后使用范围解析运算符访问它们
Pesna::tip
如何设置枚举类型提示的默认值,我尝试将其设置为 0 或 1,或者什么都不设置,但我得到同样的错误?
enum tip {
pop,
rap,
rock
};
class Pesna{
private:
char *ime;
int vremetraenje;
tip tip1;
public:
//constructor
Pesna(char *i = "NULL", int min = 0, tip t){
ime = new char[strlen(i) + 1];
strcpy(ime, i);
vremetraenje = min;
tip1 = t;
}
};
您必须将其设置为 enum
值之一,例如:
Pesna(char *i = "NULL", int min = 0, tip t = pop)
// ^^^^^
另一种技术是使用 enum
本身声明的 Default
值并使用该值。如果您以后改变主意,默认值应该是什么,这会更容易:
enum tip {
pop,
rap,
rock,
Default = rap, // Take care not to use default, that's a keyword
};
Pesna(char *i = "NULL", int min = 0, tip t = Default)
// ^^^^^^^^^
不要将枚举视为 0 或 1 之类的数字(在某些情况下,它们甚至可以是有符号或无符号的)。在您引用它们的方式中,将它们更像是 class/struct。所以使用
tip = 1
不会成功,因为“小费”不是数字,而是它自己的实体。没有明确说明枚举从其他地方开始,比如
enum tip { pop = 7, ...}
第一个枚举将从 0 开始。因此您可以 cast/uncast 使用那些带有“数字”的表示,但我还是要小心。通常,在 class 的 public 命名空间中声明 class 特定的枚举会更好,例如
class Pesna {
public:
enum tip { pop, ...}
然后使用范围解析运算符访问它们
Pesna::tip