我枚舉類,說擴展枚舉類
enum class Enum{
var1, var2;
}
現在我想添加一些部件,其取決於參數即var3(int)
。好的,這不是枚舉,所以我想通過普通的類更改它,但我的目標是將舊代碼(Enum::var1
作爲Enum
類型的值)編譯。
我試圖做這種方式(讓我們暫時忘記了var3
,這將是靜態函數):
class Enum{
public:
const static Enum var1 = Enum(1);
const static Enum var2 = Enum(2);
private:
Enum(int v):v(v){
}
int v;
//operator == using v
};
但是,這並不編譯,因爲枚舉具有不完整的類型。
我不能在課後聲明它,因爲它在標題中,所以它不適用於多個cpp。此外,在這裏建立公共構造函數並不是個好主意。
有什麼想法?
這樣做的最大的問題是你不能使用'枚舉:: VAR1 '需要一個常量表達式。 – Xeo
@ Xeo1:將constexpr修復它?順便說一句,不需要使用constexpr(現在,也許) – RiaD
不,因爲類類型不能用作非類型模板參數。 – Xeo