2012-10-23 69 views
1

如果我有一個包含enum成員的類,並且該成員未用任何數據初始化。未初始化的枚舉在C++ MFC中的值

我想檢查是否已經放置了一些值(我正在爲班級驗證所有成員已經初始化的驗證機制),我可以比較enum成員與什麼? NULL?或者它收到0(0就像第一個字段,所以對任何人都不會有好處)。

回答

4

你不能比較一個未初始化的變量和任何東西,因爲它是未定義的行爲來讀取它。

因此,最安全的方法是將UNSET狀態保留爲enum的一部分,將其初始化爲此狀態,並將其與此狀態進行比較。

+0

這真的是未定義的行爲?我認爲這是「不明確的價值」。 –

+0

不是,UB。如果你想要某種未初始化的值,你必須自己初始化它。 – Puppy

+0

有趣......因此它與C不同。 –