看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《Asker97 (市井小民)》之銘言: : 大家好 : 想問在struct中有辦法宣告constant value嗎? : 目前所懂的是當要宣告const value : 可以在程式開始時 : #define SIZE 6 : 這樣的方式 : 但如果想寫在struct呢? : 想過static 但static只是會保存 不是定值 : 謝謝大家 struct Foo { const static int SIZE; }; const int Foo::SIZE = 6; 不過這種情況下 SIZE 並不是 compile-time 就可以知道的定值 也就是你不能這樣寫 int array[Foo::SIZE]; 如果你想要達成上面那個樣子 有個方法是用 enum struct Foo { enum { SIZE = 6 }; }; 我承認這個方法很噁爛 而且只能用在整數型別 但不幸的 這是用 #define 以外唯一的方法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.29.108
james732:第二個用 enum 的寫法 要怎麼使用那個值呢? 10/29 11:51
QQ29:Foo::SIZE @@不過為啥可以直接取用? 10/29 11:54
james732:那兩種寫法似乎都只能用在C++?用gcc都編譯失敗 10/29 11:57
QQ29:想問一下const static int SIZE;等於static const int SIZE嘛 10/29 11:59
QQ29:這兩個修飾字是同時修飾int? 10/29 12:00
holymars:根據C++ standard 9.4.2..const static integral type 10/29 13:14
holymars:可以直接在struct內初始化 10/29 13:14
holymars:struct Foo { static const int SIZE = 6; }; 10/29 13:14
holymars:這是合法的 也可以直接用 int array[Foo::SIZE] 10/29 13:15
littleshan:哇靠 我真的沒看到這件事 10/29 13:15
VictorTom:所以C++都出到9.x了, 以後有人誤寫說自己用C++ 6.0也是 10/29 13:19
VictorTom:通的喔....XD 10/29 13:19
holymars:...9.4.2的意思是第九章第四條第二款 10/29 13:27
VictorTom:嗚~~後面那個誰, 不準偷笑....Q_Q~ 10/29 14:04
cplusplus:跳著看的齁~~ kerker 10/29 14:09
VictorTom:(看看ID)嗚~~被樓上偷笑也不能說什麼了....Q_Q~ 10/29 14:11
ledia:我沒笑.... 真的沒有.... XD (噗嗤) 10/29 14:24
legendmtg:XDDDDD 10/29 16:11
POSIX:XDDDDD 這樣每翻幾頁就更新一次了耶!!! XDDDD 10/29 19:00
VictorTom:嗚嗚~~大家都欺負偶....Q_Q~ 10/30 00:54
Asker97:謝謝~ 11/03 22:10