[问题] 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