C++核心準則Enum.4:爲枚舉類型定義運算符以便安全又簡單地使用

Enum.4: Define operations on enumerations for safe and simple use

Enum.4:爲枚舉類型定義運算符以便安全又簡單地使用

 

Reason(原因)

Convenience of use and avoidance of errors.

方便使用又少犯錯。

 

Example(示例)

enum Day { mon, tue, wed, thu, fri, sat, sun };

Day& operator++(Day& d)
{
    return d = (d == Day::sun) ? Day::mon : static_cast<Day>(static_cast<int>(d)+1);
}

Day today = Day::sat;
Day tomorrow = ++today;

The use of a static_cast is not pretty, but

static_cast的用法不太好,但是:

Day& operator++(Day& d)
{
    return d = (d == Day::sun) ? Day::mon : Day{++d};    // error
}

is an infinite recursion, and writing it without a cast, using a switch on all cases is long-winded.

是一個特別深的遞歸,如果不用cast,使用覆蓋所有情況的switch語句又會過於繁雜。

 

Enforcement(實施建議)

Flag repeated expressions cast back into an enumeration.

標記反覆轉換,最後變成枚舉類型的表達式。

 

原文鏈接:

https://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md#enum4-define-operations-on-enumerations-for-safe-and-simple-use

 


 

覺得本文有幫助?歡迎點贊並分享給更多的人。

閱讀更多更新文章,請關注微信公衆號【面向對象思考】

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章