[問題] 運算子多載編譯失敗

看板C_and_CPP作者 (天使羽根)時間13年前 (2011/06/13 15:30), 編輯推噓1(1025)
留言26則, 7人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Dev-C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 欲在類別外多載運算子"+" 卻編譯失敗 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 'int CWin::width' is within this context 'int CWin::height' is within this context 程式碼(Code):(請善用置底文網頁, 記得排版) http://pastie.org/2059688 補充說明(Supplement): 限定在類別外以一般函數之方式多載運算子 是否因為'width' 'height'是屬於private,所以無法在類別外存取? 那該如何修改多載函數呢? 請各位先進不吝指教<(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.147.96.186

06/13 16:23, , 1F
參照:"CWin& operator+(...)"
06/13 16:23, 1F

06/13 16:24, , 2F
可不可以改成public?
06/13 16:24, 2F
請問哪個地方改成public? 參照修改CWin& operator+(...)後還是一樣耶ˊˋ ※ 編輯: jojowolf 來自: 122.147.96.186 (06/13 16:37)

06/13 17:14, , 3F
其實johnhmj是叫你把operator+放在public那邊,只是要
06/13 17:14, 3F

06/13 17:15, , 4F
多加東西.先想想看吧!
06/13 17:15, 4F
放在public內的方式可行....,不過那是書本的上一題,done.... 這一個題目是說:限定使用一般函數寫法 小弟的code應該是函數哪邊語法錯誤,翻書還是找不到....Q_Q ※ 編輯: jojowolf 來自: 123.240.195.102 (06/13 18:54)

06/13 20:37, , 5F
我想他是要考你friend keyword吧@@ 翻翻書index查一下?
06/13 20:37, 5F

06/13 20:53, , 6F
乖別哭,cole945已經講出答案了.
06/13 20:53, 6F

06/13 21:26, , 7F
CWin Cwin::operator+(...)
06/13 21:26, 7F

06/13 23:50, , 8F
是指友誼函數嗎?題目不是這樣耶。也不是範疇的方式@@
06/13 23:50, 8F

06/13 23:53, , 9F
fire大的我會;友誼函數我會,可是題目是:一般函數寫法
06/13 23:53, 9F

06/13 23:55, , 10F
給 CWin 一些 getter function ?
06/13 23:55, 10F

06/13 23:55, , 11F
試了好久…,好想哭…,不過還是感謝各位先進不吝指教
06/13 23:55, 11F

06/13 23:56, , 12F
先跳過了
06/13 23:56, 12F

06/14 10:03, , 13F
= =基本上operator overloading不用friend or firejox
06/14 10:03, 13F

06/14 10:03, , 14F
方法,到底還可以怎麼做? 我強烈建議你看懂題目再做
06/14 10:03, 14F
這麼做http://pastie.org/2070620 連結的code就是把原本在類別內的第一個、第二個operator>()函數,改寫在類別外 連結的code是已經編譯完成且可以執行 我不懂的地方就是在類別外的函數,回傳CWin類別物件wina,winb的area比較值: 22 return(wina.area()>winb.area()); 既然可以return呼叫類別內函數,那為什麼原文貼的code無法執行物件的資料比較呢? 還是說,函數傳回類別,就必須要使用範疇或是友誼函數嗎? 但是書本給的題目的確是"請用一般函數多載運算子"..... 另外請教angleevil大大,firejox是什麼?@@看不懂 ※ 編輯: jojowolf 來自: 122.147.96.252 (06/15 13:35)

06/15 16:49, , 15F
firejox 是一個版友的ID
06/15 16:49, 15F

06/15 19:44, , 16F
我在這裡>.^
06/15 19:44, 16F

06/15 21:37, , 17F
= =這篇可不可以加入精華區,這樣也可以喔...
06/15 21:37, 17F

06/15 21:38, , 18F
...為什麼他人的id要問我...我最近才來這的
06/15 21:38, 18F

06/15 22:28, , 19F
樓上是因為你少打了"的" 呀
06/15 22:28, 19F

06/15 22:29, , 20F
你的句子會變成 "friend or firejox 方法" 會被誤解XDD
06/15 22:29, 20F

06/15 22:32, , 21F
那種方法是 scope resolution operator
06/15 22:32, 21F

06/16 08:31, , 22F
讓我吃驚的並非friend和scope resolution operator
06/16 08:31, 22F

06/16 08:32, , 23F
而是真的可以用一般函數多載運算子.
06/16 08:32, 23F

06/16 08:33, , 24F
原先的程式會錯,是因為操作private member value.
06/16 08:33, 24F

06/16 08:36, , 25F
可以往這方面研究,不會的話,再問firejox吧!
06/16 08:36, 25F
我寫信給原作者了...他說他這兩天忙完會回答我 人很好~很有禮貌~大推---C++教學手冊 2/e 作者:洪維恩 ※ 編輯: jojowolf 來自: 122.147.98.22 (06/16 12:08)

06/16 13:17, , 26F
=..=打廣告喔,你問他什麼阿?
06/16 13:17, 26F
文章代碼(AID): #1DzRo0jj (C_and_CPP)