Re: [問題] 在struct中有辦法宣告constant value嗎?

看板C_and_CPP作者 (我要加入劍道社!)時間16年前 (2009/10/29 11:42), 編輯推噓12(1209)
留言21則, 10人參與, 最新討論串2/2 (看更多)
※ 引述《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

10/29 11:51, , 1F
第二個用 enum 的寫法 要怎麼使用那個值呢?
10/29 11:51, 1F

10/29 11:54, , 2F
Foo::SIZE @@不過為啥可以直接取用?
10/29 11:54, 2F

10/29 11:57, , 3F
那兩種寫法似乎都只能用在C++?用gcc都編譯失敗
10/29 11:57, 3F

10/29 11:59, , 4F
想問一下const static int SIZE;等於static const int SIZE嘛
10/29 11:59, 4F

10/29 12:00, , 5F
這兩個修飾字是同時修飾int?
10/29 12:00, 5F

10/29 13:14, , 6F
根據C++ standard 9.4.2..const static integral type
10/29 13:14, 6F

10/29 13:14, , 7F
可以直接在struct內初始化
10/29 13:14, 7F

10/29 13:14, , 8F
struct Foo { static const int SIZE = 6; };
10/29 13:14, 8F

10/29 13:15, , 9F
這是合法的 也可以直接用 int array[Foo::SIZE]
10/29 13:15, 9F

10/29 13:15, , 10F
哇靠 我真的沒看到這件事
10/29 13:15, 10F

10/29 13:19, , 11F
所以C++都出到9.x了, 以後有人誤寫說自己用C++ 6.0也是
10/29 13:19, 11F

10/29 13:19, , 12F
通的喔....XD
10/29 13:19, 12F

10/29 13:27, , 13F
...9.4.2的意思是第九章第四條第二款
10/29 13:27, 13F

10/29 14:04, , 14F
嗚~~後面那個誰, 不準偷笑....Q_Q~
10/29 14:04, 14F

10/29 14:09, , 15F
跳著看的齁~~ kerker
10/29 14:09, 15F

10/29 14:11, , 16F
(看看ID)嗚~~被樓上偷笑也不能說什麼了....Q_Q~
10/29 14:11, 16F

10/29 14:24, , 17F
我沒笑.... 真的沒有.... XD (噗嗤)
10/29 14:24, 17F

10/29 16:11, , 18F
XDDDDD
10/29 16:11, 18F

10/29 19:00, , 19F
XDDDDD 這樣每翻幾頁就更新一次了耶!!! XDDDD
10/29 19:00, 19F

10/30 00:54, , 20F
嗚嗚~~大家都欺負偶....Q_Q~
10/30 00:54, 20F

11/03 22:10, , 21F
謝謝~
11/03 22:10, 21F
文章代碼(AID): #1AwGyV5P (C_and_CPP)
文章代碼(AID): #1AwGyV5P (C_and_CPP)