看板 C_and_CPP 關於我們 聯絡資訊
雖然標題說繼承,不過我想做的事情是這樣的: 把兩個 struct 共同的欄位抽取出來,再各自加上自己獨有的欄位 假設我有這樣的兩個大同小異的 struct (Tn 代表是某種 Type) struct s1 { struct s2 { T1 a; T1 a; T2 b; T2 b; T3 c; T3 c; T4 z; T5 y; }; }; 這樣的話我該怎麼讓它們的宣告化簡呢? 如果我這麼寫: struct base { struct s1 { struct s2 { T1 a; struct base base; struct base base; T2 b; T4 z; T5 y; T3 c; }; }; }; 雖然可以成功抽取共同的部份,但是使用卻變得有所不便: struct s1 s; s.base.a = N; // 如果我要對 a 賦值,還要多插一個 base 有沒有辦法能讓我兼顧「不要重覆宣告」與「不影響取值方式」呢? 使用平台:Linux GCC -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.173.133.199
sunneo:其實不用s.base.a 你可以把他cast成為base(super)後直接用a 01/05 01:15
freesamael:加上 getter 和 setter 函式? 01/05 01:16
sunneo:用巨集跟指標 (推文時間200秒@_@?) 01/05 01:19
freesamael:對阿,我上一篇也是推一行之後只好回文章XD 01/05 01:24
buganini:base { // 跟T3 c; // 倒是可以 (逃..) 01/05 01:24
jpeanut:滿有趣的問題 我也想知道 01/05 10:03
gohomexx:struct s1 : public s { .... } 01/06 13:38
gohomexx:struct s1 : public base <~ s1 繼承 base 就好了.. 01/06 13:40
james732:傳統的C語言不能這麼用啦 XD 01/06 14:58
gohomexx:XD, 沒看到是用C語言... 01/06 15:32