[問題] class 如何使用 a.b.c

作者: noodleT (麵T)   2014-06-28 18:11:17
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,
但除了這樣之外,請問還有其他辦法可解決嗎?
作者: steve1012 (steve)   2014-06-28 18:37:00
compile不過嗎?
作者: remizu (remizu)   2014-06-28 19:40:00
可以貼一下你的錯誤訊息嗎?
作者: LPH66 (-6.2598534e+18f)   2014-06-28 20:47:00
你的敘述好像有一點打不到點...如果我沒猜錯的話你的問題應該將 getFa() 改成回傳 vector3& 即可解決你是想藉由 F.getFa() 來存取那裡面的 vector3 吧?這樣的話就不應該 return by value, 這會複製一份那個物件
作者: noodleT (麵T)   2014-06-28 22:18:00
你說的沒錯,回傳vector3&還是有問題
作者: Feis (永遠睡不著 @@)   2014-06-28 22:25:00
這 code 看得有點頭痛. 不過錯誤訊息究竟是 ?
作者: legendmtg (CLANNAD)   2014-06-28 22:38:00
把F改成Jedi就能用了 (誤
作者: Killercat (殺人貓™)   2014-06-28 23:12:00
你的vector3沒有assign constructor吧我想打錯 copy constructor
作者: LPH66 (-6.2598534e+18f)   2014-06-29 01:01:00
樓上是在 return by value 時才會有的問題是說改成回傳 ref 之後是什麼問題? 錯誤訊息能貼上來嗎?
作者: Killercat (殺人貓™)   2014-06-29 01:41:00
我漏了什麼typedef沒看到嗎 這仍然是return by value啊
作者: steve1012 (steve)   2014-06-29 09:54:00
你的code打錯了啊 你要F.getF1().getX() 你的getF1沒有加 " () " 啊因為你的getX()左邊是 F.getF1 他會去找有沒有這種class因為沒有 所以他說他不知道怎麼決定type(錯誤訊息)

Links booklink

Contact Us: admin [ a t ] ucptt.com