看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚)  我定義了一個 class 要來處理 3D 向量。寫了一段簡單的程式: int main() { float fT = 1; point3 vecA = point3( 1, 1, 1 ); point3 vecB = point3( 2, 2, 2 ); point3 vecR = vecA * fT * fT + vecB * fT * fT; return 0; }  這個程式在 Windows C++ 環境下執行沒有問題,  但要移到 Obj-C 上(Xcode 平台)complie 就過不了了。  錯誤訊息: /Users/yehdavid/Desktop/Untitled1/Overloading.cpp:12: error: no match for 'operator+' in 'vecA. CM3dVector3f::operator*(fCurrT).CM3dVector3f::operator*(fCurrT) + vecB. CM3dVector3f::operator*(fCurrT).CM3dVector3f::operator*(fCurrT)'  若稍微改寫一下程式變成這樣子... int main() { float fT = 1; point3 vecA = point3( 1, 1, 1 ); point3 vecB = point3( 2, 2, 2 ); point3 vecR1 = vecA * fT * fT; point3 vecR2 = vecB * fT * fT; point3 vecR = vecR1 + vecR2; return 0; }  就能順利 complie,完成我要的運算...  請問,為什麼第一種寫法過不了關呢?該要怎麼做呢?  底下附上 class 的定義: class point3 { float x; float y; float z; public: point3() {}; point3( float fx, float fy, float fz ) { x = fx; y = fy; z = fz; } point3 operator + ( point3 &v ) { return point3( x + v.x, y + v.y, z + v.z ); } point3 operator * ( float f ) { return point3( x * f, y * f, z * f ); } }; --  追根究底所得到的東西,是失望的觀眾,以及狼狽的魔術師... De'Ring Practice http://www.wretch.cc/blog/miauwally/21246514 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.90.104
dendrobium:過... 01/12 20:50
dendrobium:有沒有編譯過不了卻不看錯誤訊息的八卦? 01/12 20:56
※ 編輯: archon 來自: 122.116.90.104 (01/12 21:03)
dendrobium:obj-c似乎不支援operator overloading ? 01/12 21:16
archon:真是個殘酷的事實... ( ̄□ ̄|||)a 01/12 21:41
LPH66:我猜是 compiler 看不懂 + 的兩邊其實是 point3... 01/12 21:50
LPH66:雖然我不太懂 obj-c 原PO要不要試試改成 (...)+(...) 這樣? 01/12 21:51
Dannvix:不是,我看不懂這個哪裡obj-c了...明明就是c++啊? 01/12 23:02
goosey:這比較像是有overloading operator的java 01/12 23:27
goosey:後面 (vecB* ...) 試看看 01/12 23:30
archon:(...)+(...) 也不 work... 但還是很感謝大家的參與 QwQ 01/13 09:58