如何设置枚举类型提示的默认值,我尝试将其设置为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;
}
};
答案 0 :(得分:4)
您必须将其设置为enum
之一,例如:
Pesna(char *i = "NULL", int min = 0, tip t = pop)
// ^^^^^
另一项技术是使用Default
本身声明的enum
值并使用该值。如果您稍后改变主意,默认情况应该更容易:
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)
// ^^^^^^^^^
答案 1 :(得分:1)
不要将枚举视为0或1之类的数字(在某些情况下,它们甚至可以是有符号的或无符号的)。按照您引用它们的方式,将它们更像是类/结构。所以使用
tip = 1
之所以不会这样做,是因为因为“ tip”不是数字,而是它自己的实体。在没有明确说明枚举的情况下,
enum tip { pop = 7, ...}
第一个枚举将从0开始。因此,您可以使用带有“数字”的表示形式进行强制转换/取消强制转换,但是我会再次注意这一点。同样,通常最好在类的公共命名空间中声明特定于类的枚举,例如
class Pesna {
public:
enum tip { pop, ...}
,然后使用范围解析运算符访问它们
Pesna::tip