我正在尋找一個使用C++ 03標準的解決方案(我被限制使用這個版本的標準幾年了)。 C++ 11的解決方案也是受歡迎的,但不會被「接受」爲這個問題的答案。C++「Floating Point Enum」
什麼是一種簡單,簡潔的方式,我可以將一組相關常量浮點值表示爲單一類型(類似於枚舉),以確保類型安全性而不會產生大量開銷,並且仍然允許我操作值直接浮動?
最終的結果是,我希望能夠做到像下面這樣:
enum FloatingPointEnum
{
VALUE1 = 0.1234f,
...
VALUEN = 0.6789f
};
float SomeFunction(FloatingPointEnum value)
{
float new_value;
/* perform some operation using "value" to calculate "new_value" */
new_value = static_cast<float>(value); // <- a simplistic example
return new_value;
}
雖然我能想到的幾個解決方案,他們都不是乾淨/簡單/簡單的,因爲我會喜歡和我認爲有人必須已經有一個優雅的解決方案,這個問題(但我似乎無法找到一個在我的搜索)。
編輯:
我想下面的調用將不直接指定爲枚舉類型的值的值SomeFunction無法編譯:
float nonEnumeratedValue = 5.0f
SomeFunction(nonEnumeratedValue);
型安全<->「仍然允許我直接作爲花車操作值」你是什麼意思?如果存在從該類型到「浮動」的隱式轉換,則它不會是類型安全的。如果沒有,則不能直接作爲「浮動」*進行操作。你能提供一些例子嗎? – dyp
由於類型安全,您希望編譯失敗的代碼示例會很有幫助。 – hyde