看板 C_and_CPP 關於我們 聯絡資訊
class vector3 { private: double x,y,z; public: vector3(); double getx(); void setXYZ(double,double,double); ... }; /////////////////////////////////////////////////////// class force{ private: vector3 fa,fb,fc; public: vector3 getFa(); //這邊不會寫 double getPI(); ... }; vector3 force::getFa(){ return fa; } double force::getPI(){ return 3.14; } /////////////////////////////////////////////////////// void main(){ force F; double fa_x = F.getFa().getx(); //預期得到fa_x ^^^^^^^^ 這邊 OK 了(只是 BCB 沒跳自動提示而已) 但後面 .getX() 無法成功編譯 } 目前想到的辦法是把 vector3 fa,fb,fc 宣告成 public, 但除了這樣之外,請問還有其他辦法可解決嗎? -- 我是麵T,哩賀 http://ppt.cc/-eS5 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.82.214 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1403950281.A.3E0.html
steve1012:compile不過嗎? 06/28 18:37
這邊 OK 了(只是 BCB 沒跳自動提示而已) 但後面 .getX() 無法成功編譯 用這種寫法就算可以 F.fa.getX(),但也無法 F.fa.setXYZ(1,2,3) 吧? ※ 編輯: noodleT (36.237.82.214), 06/28/2014 18:53:56
remizu:可以貼一下你的錯誤訊息嗎? 06/28 19:40
LPH66:你的敘述好像有一點打不到點...如果我沒猜錯的話 06/28 20:47
LPH66:你的問題應該將 getFa() 改成回傳 vector3& 即可解決 06/28 20:48
LPH66:你是想藉由 F.getFa() 來存取那裡面的 vector3 吧? 06/28 20:50
LPH66:這樣的話就不應該 return by value, 這會複製一份那個物件 06/28 20:50
noodleT:你說的沒錯,回傳vector3&還是有問題 06/28 22:18
Feis:這 code 看得有點頭痛. 不過錯誤訊息究竟是 ? 06/28 22:25
legendmtg:把F改成Jedi就能用了 (誤 06/28 22:38
Killercat:你的vector3沒有assign constructor吧我想 06/28 23:12
Killercat:打錯 copy constructor 06/28 23:12
LPH66:樓上是在 return by value 時才會有的問題 06/29 01:01
LPH66:是說改成回傳 ref 之後是什麼問題? 錯誤訊息能貼上來嗎? 06/29 01:02
完整程式碼:http://ideone.com/SZg3Uf (希望有比較清楚) 錯誤訊息(DEV C++):insufficient contextual information to determine type ※ 編輯: noodleT (36.237.82.214), 06/29/2014 01:14:13
Killercat:我漏了什麼typedef沒看到嗎 這仍然是return by value啊 06/29 01:41
steve1012:你的code打錯了啊 你要F.getF1().getX() 你的getF1 06/29 09:54
steve1012:沒有加 " () " 啊 06/29 09:55
steve1012:因為你的getX()左邊是 F.getF1 他會去找有沒有這種class 06/29 09:55
steve1012:因為沒有 所以他說他不知道怎麼決定type(錯誤訊息) 06/29 09:56