簡體   English   中英

如何設置枚舉類型變量的默認值?

[英]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之類的數字(在某些情況下,它們甚至可以是有符號的或無符號的)。 按照您引用它們的方式,將它們更像是類/結構。 所以用

tip = 1

不會,因為“ tip”不是數字,而是它自己的實體。 沒有明確說明枚舉會從其他地方開始

enum tip { pop = 7, ...}

第一個枚舉將從0開始。因此,您可以使用帶有“數字”的表示形式進行強制轉換/取消強制轉換,但是我會再次小心。 同樣,通常最好在類的公共命名空間中聲明特定於類的枚舉,例如

class Pesna {
  public:
    enum tip { pop, ...}

然后使用范圍解析運算符訪問它們

Pesna::tip

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM