[問題] 一段code的問題

看板C_and_CPP (C/C++)作者 (小小包)時間16年前 (2010/05/31 22:52), 編輯推噓3(3012)
留言15則, 8人參與, 最新討論串1/1
遇到的問題: (題意請描述清楚) code找不出錯誤,不知是否格式哪裡有錯 希望得到的正確結果: 能夠成功執行function 程式跑出來的錯誤結果: request for member `data' in something not a structure or union request for member `left' in something not a structure or union request for member `right' in something not a structure or union 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) Dev-C++ 有問題的code: (請善用置底文標色功能) void show(Node *tree){ if(tree != NULL){ printf("List by preorder : "); printf("%d ",tree.data); show(&tree->left); show(&tree->right); } } struct定義是這樣 typedef struct List{ int data; struct List *left; struct List *right; }List; typedef List * Node; 補充說明: 這個fuction是要以preorder來印出binary search tree 可是卻找不出問題解決的方法 麻煩大家了 謝謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.22.50

05/31 22:54, , 1F
Node 等同於 List*, 但是 tree 的型態是 Node*, 你覺
05/31 22:54, 1F

05/31 22:54, , 2F
得會怎樣?
05/31 22:54, 2F

05/31 22:55, , 3F
建議不要濫用 typedef 讓程式更混亂...
05/31 22:55, 3F

05/31 23:30, , 4F
有本常見的書很愛教人家用 typedef 定義 pointer type XD
05/31 23:30, 4F

06/01 00:09, , 5F
死螞蟻
06/01 00:09, 5F

06/01 00:26, , 6F
還好C++不會碰到這問題
06/01 00:26, 6F

06/01 00:29, , 7F
怎麼不會碰到這問題? @@
06/01 00:29, 7F

06/01 00:30, , 8F
因為struct/class/union的tag name 可以直接當成typename吧
06/01 00:30, 8F

06/01 00:31, , 9F
不過這沒差 compiler應當攔的到這樣的手誤
06/01 00:31, 9F

06/01 00:36, , 10F
BDD XD...
06/01 00:36, 10F

06/01 01:26, , 11F
因為C++定義struct時,前面不用加typedef就能直接用了
06/01 01:26, 11F

06/01 02:54, , 12F
C++ 很怕遇到那種有 typedef + forward decl 的 C code。
06/01 02:54, 12F

06/01 02:54, , 13F
因為當兩者同時出現 (通常經由 #include 兩個檔案) 時,
06/01 02:54, 13F

06/01 02:54, , 14F
C compiler 可以過,C++ compiler 會死翹翹。
06/01 02:54, 14F

06/01 02:55, , 15F
不過這個問題和這篇只是類似的問題,不是相同的一回事。
06/01 02:55, 15F
文章代碼(AID): #1C0yqPMU (C_and_CPP)
文章代碼(AID): #1C0yqPMU (C_and_CPP)