【问题标题】:Class Operator * Overloading类运算符 * 重载
【发布时间】:2017-04-08 23:44:32
【问题描述】:

我在 *operator 重载时遇到问题。当我想将 oblect 与 double 相乘时,它给了我以下错误

" Polar Polar::operator* (const Polar &p, double 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;
}

【问题讨论】:

    标签: class operator-overloading operator-keyword


    【解决方案1】:

    让他们成为朋友功能解决了这个问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-01
      • 2019-09-12
      • 2011-11-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-13
      • 2011-07-21
      • 2021-07-10
      相关资源
      最近更新 更多