[英]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.