[問題] Operator overloading in Obj-C
遇到的問題: (題意請描述清楚)
我定義了一個 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
推
01/12 20:50, , 1F
01/12 20:50, 1F
推
01/12 20:56, , 2F
01/12 20:56, 2F
※ 編輯: archon 來自: 122.116.90.104 (01/12 21:03)
推
01/12 21:16, , 3F
01/12 21:16, 3F
→
01/12 21:41, , 4F
01/12 21:41, 4F
推
01/12 21:50, , 5F
01/12 21:50, 5F
→
01/12 21:51, , 6F
01/12 21:51, 6F
推
01/12 23:02, , 7F
01/12 23:02, 7F
推
01/12 23:27, , 8F
01/12 23:27, 8F
推
01/12 23:30, , 9F
01/12 23:30, 9F
→
01/13 09:58, , 10F
01/13 09:58, 10F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章