如何设置枚举类型变量的默认值?

时间:2016-08-25 13:37:12

标签: c++ enums default

如何设置枚举类型提示的默认值,我尝试将其设置为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;
}

};

2 个答案:

答案 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