乙個通用類,用於解決聯合體初始化問題

2022-05-19 15:32:12 字數 838 閱讀 7755

c++早期版本中,結構中的聯合體,在初始化時,總有很多支援不佳的編譯器,這兒提供乙個通用類,用於實現聯合體的初始化

class

unionvalue base_value_;

public

:

explicit unionvalue(uint8_t u8_)

explicit unionvalue(uint16_t u16_)

explicit unionvalue(uint32_t u32_)

explicit unionvalue(int8_t i8_)

explicit unionvalue(int16_t i16_)

explicit unionvalue(int32_t i32_)

explicit unionvalue(float f_)

uint8_t value_u8()

uint16_t value_u16()

uint32_t value_u32()

int8_t value_i8()

int16_t value_i16()

int32_t value_i32()

float value_f()

};

整個類定義簡單,且不占用額外空間,使用時也不需要有額外的**

示例結構體:

typedef struct

level_st level_st ;

初始化**如下:

level_st override_level =,

,};

C陣列 結構體 聯合體快速初始化

背景 c89標準規定初始化語句的元素以固定順序出現,該順序即待初始化陣列或結構體元素的定義順序。c99標準新增指定初始化 designated initializer 即可按照任意順序對陣列某些元素或結構體某些成員進行選擇性初始化,只需指明它們所對應的陣列下標或結構體成員名。gnu c將其作為c89...

C基礎 聯合體 1 定義,初始化,賦值,使用

概念 聯合 union 是一種資料型別,它能在同乙個記憶體空間中儲存不同的資料型別 不是同時儲存 其典型的用法是,設計一種表以儲存既無規律 事先也不知道順序的混合型別。使用聯合型別的陣列,其中的聯合都大小相等,每個聯合可以儲存各種資料型別。定義 建立聯合和建立結構的方式相同,需要乙個聯合模板和聯合變...

初始化乙個類的便捷方法

一般地,我們要初始化乙個類的時候 都是用 以person類為例 person person person alloc init 今天無意中在書上看到 person person person new 可以一步完成alloc 以及init的工作 但是,又發現了乙個問題 如果我們不想類中的例項變數被其他...