看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 2010、Dev C 4.9.9.2 問題(Question): 最近教到了虛擬函式的運用,在寫相關的功課 今天去找助教,盧了他半個下午後總算把功課寫完了 不過我是用VC++ 2010寫的,最後在執行時,總是會出現: error C2250: 'AdvVectorIO' : 'AdvVectorI &VectorCpx::operator <<(std::fstream &)' 的繼承模稜兩可 這樣的錯誤訊息然後不給過,問題是我和助教檢查了好幾遍都找不到問題所在 助教決定換老牌的Dev C試試看,結果只跳了一個警告就能順利執行了 想請問大家,為什麼會有這種差異呢?還是我原本的程式碼裡面還有什麼不足之觸? 感謝 P.S.回家想用自己電腦裡的Dev C再跑一次,結果跳了另一個錯誤訊息: [Build Error] *** multiple target patterns. Stop. O_O......我有上網查過這行錯誤訊息的意思,但還是不知道怎麼解決 程式碼(Code):(請善用置底文網頁, 記得排版) VectorCpx.h:http://ideone.com/ybCyMJ VectorCpx.cpp:http://ideone.com/CuHa92 main.cpp:http://ideone.com/6tRh5S 補充說明(Supplement): --
gcobc12632 :一樓帥哥11/04 22:52
maple0935 :二樓帥哥11/04 22:52
howar31 :二樓帥哥11/04 22:52
howar31 :..11/04 22:52
maple0935 :五樓吃屎 11/04 22:53
maple0935 :幹 可以不要當簽名檔嗎... 11/04 22:53
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.35.4
hilorrk:g++ -Wall -Wextra -pedantic main.cpp VectorCpx.cpp 05/16 21:26
hilorrk:gcc versiono 4.5.3 除了抱怨型態比較外可以編過沒問題 05/16 21:27
o07608:那是要叫VC++出來面對了嗎O_O 05/16 21:28
hilorrk:懶得灌 VC ... 肉眼看一下看不出問題,請其他大大幫忙吧XD 05/16 21:46
LPH66:呃, 這不就是死亡鑽石嗎... 05/16 22:24
o07608:O_Oa 05/16 22:24
LPH66: VectorCpx 05/16 22:26
LPH66: / \ 05/16 22:26
LPH66:AdvVectorO AdvVectorI 05/16 22:26
LPH66: \ / 05/16 22:26
LPH66: AdvVectorIO 標準的死亡鑽石繼承樹 05/16 22:26
是阿0.0 現在就是這顆鑽石在不同的環境下會變成鑽石或石墨這樣......
WPC001:問題出在 virtual AdvVectorI& operator<<(fstream& file); 05/16 23:10
WPC001:virtual AdvVectorIO& operator<<(fstream& file); 05/16 23:11
WPC001:確實模稜兩可... 05/16 23:12
不是加了virtual就沒事了嗎0.0?
WPC001:LPH大說的... 繼承確實可以這樣搞, 但使用時最好小心 05/16 23:14
elba:http://tinyurl.com/a8bmv94 05/16 23:44
hilorrk:我以為 derived class 自己有就不會 ambiguous.. 05/16 23:44
hilorrk:哦哦 原來是 bug 05/16 23:46
elba:如果硬要用VC,覆載運算子改用friend非成員函式來躲這個bug 05/16 23:53
助教規定不能加任何的member variable和friend function ˊ_>ˋ
loveme00835:pure virtual function 05/17 00:34
每個class的operator <<,在測資裡都一定會被用到,好像不能用這個...... ※ 編輯: o07608 來自: 220.133.35.4 (05/20 11:36)