c 如何自動將強型別列舉轉換為int?

2021-10-21 06:40:50 字數 550 閱讀 8230

直接看如下**:

#include

struct a ;}

;enum

classb;

intfoo

(int input)

intmain()

a::local_a是強型別列舉試圖實現的功能,但是有乙個小的區別:普通列舉可以轉換為整數型別,而強型別列舉不能在沒有強制轉換的情況下實現。

因此,有沒有辦法將強型別的列舉值轉換為整數型別而無需強制轉換?如果是,怎麼辦?

強型別列舉,旨在解決多個問題,而不僅僅是您在問題中提到的範圍界定問題:

提供型別安全性,從而消除了通過整數提公升而隱式轉換為整數的情況。

指定基礎型別。

提供強大的作用域。

因此,不可能將強型別的列舉隱式轉換為整數,甚至是其基礎型別-這就是這個想法。因此,您必須使用static_cast明確顯示轉換。

如果唯一的問題是作用域確定,並且您確實希望隱式提公升為整數,那麼最好在宣告它的結構範圍內使用不強型別的列舉。

將C 裡的列舉Enum轉換為int

將列舉型別轉換為int在c 裡非常簡單,直接 int 強轉就行了,可是這樣寫 不方便,尤其讓我這種懶癌患者難受,我喜歡用擴充套件方法的方式實現轉換 如果不理解擴充套件方法請自行補課,這裡不再介紹 比如這樣string轉int public static class extendstring 比什麼c...

C 強制型別轉換 將3 3轉換為整型輸出

在c 的表示式中,不同的資料型別會自動地轉換型別進行運算,但有的時候也需要程式設計師自己進行強制型別轉換,將某個表示式轉換成自己所需要的資料型別。強制型別轉換的一般形式為 型別名 表示式 如果進行強制型別轉換的物件是乙個變數,則該變數的括號可以省略 如果要進行強制轉換的物件是乙個包含多項的表示式,則...

Java中如何將int 型別轉換為 Long型別

long l long 3 很多同學可能會用上面的方法將int型別轉換為long型別,但事實上這樣是不可行的。因為long是包裝類,而int是值型別資料,兩者是不能這樣強轉的。long l long 3 int和long都是基本型別的資料,是可以強轉的,那麼我就可以以此作為橋梁,強轉成long後,再...