2017-04-08 77 views
0

我在*运算符重载时遇到问题。当我想用双这是给我下面的错误乘以oblect类运算符*超载

“极地极地::运算符*(const的极地& P,双I)必须采取零个或一个参数” 我怎样才能解决错误? 请指教

#include<iostream> 
#include <cstdlib> 
#include<complex> 
using namespace std; 

class Polar 
{ 
    float r; // distance 
    float q; // angle in degrees 
    public: 
    Polar (int dist, int angle) 
    { 
     r = dist; 
     q = angle; 
    } 
    Polar (int dist) 
    { 
     r = dist; 
     q = 0; 
    } 
    Polar (const Polar &P) 
    { 
     r = P.r; 
     q = P.q; 
    } 
    Polar() 
    { 
     r = 0; 
     q = 0; 
    } 
    ~Polar() 
    { 
    } 
    int get_r(void)const 
    { 
     return r; 
    } 
    int get_q(void)const 
    { 
     return q; 
    } 
    Polar operator= (const Polar &p); 
    Polar operator* (const Polar &p); 
    Polar operator* (const Polar &p, double i); 
    Polar operator* (double i ,const Polar &p); 


void print (int i) const 
    { 
    cout<< "P"<<i<<"("<<r<<","<< q <<")"<<endl<<endl; 
    } 
}; 
inline Polar Polar::operator= (const Polar &p) 
{ 
    r = p . r; 
    q = p . q; 
    return*this; 
} 
inline Polar Polar::operator* (const Polar &p) 
{ 
    Polar temp; 
    temp.r = r * p.r; 
    temp.q = q + p.q; 
    return temp; 
} 
inline Polar Polar::operator* (const Polar &p, double i) 
{ Polar temp; 
    temp.r = p.r *i; 
    temp.q = p.q; 
    return temp; 
} 
inline Polar Polar::operator* (double i ,const Polar &p) 
{ Polar temp; 
    temp.r = i * p.r; 
    temp.q = p.q; 
    return temp; 
} 
int main () 
{ 
    Polar P1, P2(1), P3(1, 90), P4(2, 45); 
    P1.print(1); 
    P2.print(2); 
    P3.print(3); 
    P4.print(4); 
    Polar P5(P4); 
    P5.print (5); 
    Polar P6 = P2 * Polar (5, 90) ; 
    Polar P7 = P2*P3*P4; 
    P6.print (6); 
    P7.print (7); 
    Polar P8 = P4 * 3.0; 
    P8.print(8); 
    Polar P9 = 7.0 * P4; 
    P9.print(9); 

    return 0; 
} 

回答

0

使他们的朋友功能解决了问题。