看板 C_and_CPP 關於我們 聯絡資訊
簡單的說 就是是暫時變數不能當 reference 把你的 reference 拿掉就行了 或是用 C++11 裡面 rvalue reference 增加一個這樣的定義+宣告 friend CVector3 operator +(CVector3 &a, CVector3 &&b); 這兩個編譯都會過 不過這樣很麻煩,要寫兩次定義+宣告 我對 reference 也不是很熟 有更高明的人可以告訴我怎麼作比較好嗎 XD ※ 引述《noodleT (麵T)》之銘言: : class CVector3{ : private: : double e[3]; : public: : friend CVector3 operator *(CVector3 &a, double p); //向量*常數 : friend CVector3 operator +(CVector3 &a, CVector3 &b); : double &operator[](int);//元素操作 : }; : double &CVector3::operator[](int index){ : if (index < 3 && index >= 0){ : return e[index]; : } : else{ : static double err = 0.0; : return err; : } : } : 和此網站: : http://nknucc.nknu.edu.tw/~jwu/c/cpgch14.htm : 的例7相比,我多了 &operator[] 的操作 : 目的是想要較方便的存取 e[0~2] : 但卻造成我沒辦法做連續的向量運算,如: : CVector3 a1,a2,b(1,2,3),c(4,5,6);//建構時可寫入初始值,上面程式碼省略 : a1=b+c; //這樣OK : a1=b*2.0; //OK : a2=b+c*2.0; //錯誤 : a2=b+(c*2.0); //也是錯誤 : 想請教這裡錯誤的原因為何? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.175.53 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411812226.A.037.html
Caesar08: 你需要const & 09/27 19:27