作者hunandy14 (Charlott.HonG)
看板C_and_CPP
標題[問題] 樣板類別 把實作分開 struct 找不到報錯
時間Tue Jul 5 16:02:10 2016
前一篇有發問了本來兩個問題一起問
感覺好像又是不同類型,那篇又有點長
怕影響閱讀我把它拆兩篇問好了(本來打在裡面)
程式碼:
https://goo.gl/Xu3Hij
程式碼中有其中一段(create)被我註解了,那段會出錯
C:\Users\Kanasaki\Desktop\double_link_obj\main.cpp:43:1: error: 'node' does
not name a type
node* sgink<T1>::create(const T1 &n){
^
好像是說找不到typedef的定義,
不過即便我把結構放到public也是一樣
把方法放進類別內是可行的
★★★怎麼辦呢我想分開寫 QuQ
能怎麼做
---------------------------------------------------
本來有一大堆有點影響閱讀
修正後剩這麼一點(原本的砍了)
一開始的好像是錯的struct寫錯了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.35.139.127
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1467705733.A.09C.html
1F:→ Caesar08: 抱(x) -> 報(o) 07/05 16:07
已更正~~
阿~錯誤減少了,原來那一堆是struct寫錯了
還有一行錯誤
main.cpp:43:1: error: 'node' does not name a type
node* sgink<T1>::create(const T1 &n){
^
這裡有注意到您使用
node* next{nullptr};
請問這跟
node* next = 0;
有什麼差別嗎~
3F:推 Sidney0503: nullptr是智慧指標 07/05 17:03
4F:→ Sidney0503: C++不要用0和NULL 07/05 17:04
了解~
5F:推 Sidney0503: 你沒定義node...... 07/05 17:13
定義在class裡面那個struct
要怎麼定義~
6F:推 yvb: typename sgink<T1>::node* sgink<T1>::create(const T1 &n){ 07/05 21:26
嗚哇~過了,非常感謝您的協助
7F:推 Sidney0503: 跟你說過不要用struct 07/06 10:24
8F:→ Sidney0503: 發現麻煩了吧 07/06 10:25
9F:→ Sidney0503: C++跟C可以看成完全不一樣概念的語言 07/06 10:27
那能怎麼改寫~我以為這樣做是最好的
主要是想完成單向與雙向鏈結
感覺結構還是需要,比較好讀與整理思緒
把結構換成class包在外面
然後在繼承進來?或是嵌入嗎?
我把它換成了這樣
https://goo.gl/FN4CkQ
10F:推 shadow0326: 恩 不是struct的問題吧 是dependent name的宣告語法 07/06 11:22
11F:→ shadow0326: effective c++有一個item專門在講這個 07/06 11:22
12F:推 Sidney0503: 他有#include "single" 但是沒放上來 07/06 11:23
QQ 不懂
13F:→ Caesar08: ... 你就把structs改成struct,然後放在test裡就好,把 07/06 12:14
14F:→ Caesar08: structs變成test的nested class 07/06 12:14
痾~像這樣嗎~
https://www.codepile.net/pile/mzPmg0kK
(網站可以直接編輯、更改)
把 structs -> struct 是什麼意思,這樣不是衝到關鍵字了
15F:→ Caesar08: 把class structs改成struct structs... 07/06 18:10
哦哦了解~~上面的連結把它設成class也可以使用
請問設成class跟strtuct有什麼差別嗎?
還是說只是要放變數就使用struct就好?
16F:推 steve1012: Class struct 除了預設private 以外都一樣 直接用class 07/08 08:03
17F:→ steve1012: 就好 完全沒差 07/08 08:03
18F:→ steve1012: 有些coding style 會prefer pod用struct 就是了 07/08 08:04
了解~謝謝你~
※ 編輯: hunandy14 (114.35.139.127), 07/08/2016 18:55:28