看板 C_and_CPP 關於我們 聯絡資訊
我想要問一些相關的問題 在C語言情況下 我通常會在.h裡 做typedef struct 且在裡面放入指標函式 做出類似成員/方法的結構 由其他.c引用和宣告變數 像是 typedef struct tree_node TREE_NODE; /* 自我參考用 */ typedef struct tree_node{ /* 成員 */ char *word; TREE_NODE *left; TREE_NODE *right; /* 方法 */ void (*insert)(TREE_NODE**, char*); }tree_node; 問題 我是否可以在"變數宣告時"就指定指標函式指向的位置? 目前我是寫一個"初始化函式" 在"用到這個struct前"將指標函式指向我要的函式位置 可是這個"初始化函式"還是沒辦法包進struct中 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.57.154 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1466256656.A.C18.html
james732: 聽起來你需要用C++的constructor XD 06/18 21:52
LPH66: 不是, 這感覺聽起來像是有簡單物件的 C 06/18 22:14
EdisonX: 可附上你說的 "初始化函式" 嗎?這樣做應該不會有問題。 06/18 23:41
EdisonX: 另你的問題一應該是可以的 (struct 宣告並給初值)。 06/18 23:42
初始化大概會是長這樣 void tree_init(**TREE_NODE node) { (*node)->insert = insert_function; /* 把函式的位置丟給指標函式 */ }
LPH66: 是說, 這種東西你其實可以學 FILE* 的方式 06/19 00:46
LPH66: 初始化資源一定要透過某個函式去取得 06/19 00:46
LPH66: 那在那個函式裡你就可以進行你要的初始化了 06/19 00:46
LPH66: 給用戶使用的就一律類似 FILE* 這樣, 只要宣告指標即可 06/19 00:47
LPH66: 不要給用戶使用結構體本身 06/19 00:48
還沒這樣想過 我試試看 感謝三位 ※ 編輯: chuegou (111.243.57.154), 06/19/2016 11:07:46
Qoofate: 應該void tree_init( TREE_NODE ** node) 才對? 07/06 13:40