[問題] VC2010過不了的,Dev C過了

看板C_and_CPP作者 (無良記者)時間11年前 (2013/05/16 20:38), 編輯推噓1(1019)
留言20則, 6人參與, 最新討論串1/1
開發平台(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): --

11/04 22:52,
一樓帥哥
11/04 22:52

11/04 22:52,
二樓帥哥
11/04 22:52

11/04 22:52,
二樓帥哥
11/04 22:52

11/04 22:52,
..
11/04 22:52

11/04 22:53,
五樓吃屎
11/04 22:53

11/04 22:53,
幹 可以不要當簽名檔嗎...
11/04 22:53
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.133.35.4

05/16 21:26, , 1F
g++ -Wall -Wextra -pedantic main.cpp VectorCpx.cpp
05/16 21:26, 1F

05/16 21:27, , 2F
gcc versiono 4.5.3 除了抱怨型態比較外可以編過沒問題
05/16 21:27, 2F

05/16 21:28, , 3F
那是要叫VC++出來面對了嗎O_O
05/16 21:28, 3F

05/16 21:46, , 4F
懶得灌 VC ... 肉眼看一下看不出問題,請其他大大幫忙吧XD
05/16 21:46, 4F

05/16 22:24, , 5F
呃, 這不就是死亡鑽石嗎...
05/16 22:24, 5F

05/16 22:24, , 6F
O_Oa
05/16 22:24, 6F

05/16 22:26, , 7F
VectorCpx
05/16 22:26, 7F

05/16 22:26, , 8F
/ \
05/16 22:26, 8F

05/16 22:26, , 9F
AdvVectorO AdvVectorI
05/16 22:26, 9F

05/16 22:26, , 10F
\ /
05/16 22:26, 10F

05/16 22:26, , 11F
AdvVectorIO 標準的死亡鑽石繼承樹
05/16 22:26, 11F
是阿0.0 現在就是這顆鑽石在不同的環境下會變成鑽石或石墨這樣......

05/16 23:10, , 12F
問題出在 virtual AdvVectorI& operator<<(fstream& file);
05/16 23:10, 12F

05/16 23:11, , 13F
virtual AdvVectorIO& operator<<(fstream& file);
05/16 23:11, 13F

05/16 23:12, , 14F
確實模稜兩可...
05/16 23:12, 14F
不是加了virtual就沒事了嗎0.0?

05/16 23:14, , 15F
LPH大說的... 繼承確實可以這樣搞, 但使用時最好小心
05/16 23:14, 15F

05/16 23:44, , 16F

05/16 23:44, , 17F
我以為 derived class 自己有就不會 ambiguous..
05/16 23:44, 17F

05/16 23:46, , 18F
哦哦 原來是 bug
05/16 23:46, 18F

05/16 23:53, , 19F
如果硬要用VC,覆載運算子改用friend非成員函式來躲這個bug
05/16 23:53, 19F
助教規定不能加任何的member variable和friend function ˊ_>ˋ

05/17 00:34, , 20F
pure virtual function
05/17 00:34, 20F
每個class的operator <<,在測資裡都一定會被用到,好像不能用這個...... ※ 編輯: o07608 來自: 220.133.35.4 (05/20 11:36)
文章代碼(AID): #1HbDCgFy (C_and_CPP)