[問題] 用參數指定要讀取哪個data member

看板C_and_CPP (C/C++)作者 (cc)時間14年前 (2011/08/10 02:07), 編輯推噓1(105)
留言6則, 4人參與, 最新討論串1/1
我有三串程式碼 長的都是向下面這樣 p0 = e->end_vertex->data->N; p1 = e->pair->end_vertex->data->N; p2 = e->next->end_vertex->data->N; p3 = e->pair->next->end_vertex->data->N; p4 = (3 * (p0 + p1) + p2 + p3) / 8; 計算公式都一樣 但是是針對不同的data member (N可以代換成X, Y...etc )作運算 請問有沒有辦法用函式的參數指定要對哪個data member做運算? --- 目前我想到用巨集的方法 可以這樣寫 #define P0(x) e->end_vertex->data->x #define P1(x) e->pair->end_vertex->data->x #define P2(x) e->next->end_vertex->data->x #define P3(x) e->pair->next->end_vertex->data->x #define F0(x) ((3 * (P0(x) + P1(x)) + P2(x) + P3(x)) / 8) p4 = F0(N); #undef ... 只是想知道有沒有比較好的寫法 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.94.138 ※ 編輯: seedman 來自: 114.32.94.138 (08/10 15:33)

08/10 15:43, , 1F
你是說,譬如另一串程式碼取得是 ->M, 另一個取得是 ->X
08/10 15:43, 1F

08/10 15:44, , 2F
是的 最後的N是data member 針對不同的data member作運算
08/10 15:44, 2F
※ 編輯: seedman 來自: 114.32.94.138 (08/10 16:08)

08/10 16:24, , 3F

08/10 16:33, , 4F
#define INFO(x) end_vertex->data->x
08/10 16:33, 4F

08/10 20:11, , 5F
搞定囉 感謝AstralBrain的方法
08/10 20:11, 5F

08/10 20:12, , 6F
@firejox: 那就是我下面用巨集的寫法阿
08/10 20:12, 6F
文章代碼(AID): #1EGNT_-2 (C_and_CPP)
文章代碼(AID): #1EGNT_-2 (C_and_CPP)