c ++重载另一个类的赋值运算符

Ahm*_*tah 5 c++ class operator-overloading assignment-operator

我有一个c ++类来处理分数,我希望它允许转换为double,
我有类似的东西:

class fraction  
{  
    double n,d;  
public:  
    fraction(double _n, double _d) {n = _n; d = _d;}  
    //some functions  
    double todouble() {return n/d;}  
};  

fraction frac(1,2);  
double dbl = frac.todouble();  
Run Code Online (Sandbox Code Playgroud)

哪个工作正常,但我想重载赋值运算符,所以我可以直接使用:

double dbl = frac;  
Run Code Online (Sandbox Code Playgroud)

我试着添加这个:

double double::operator =(double& dbl, fraction& frac) {return dbl = frac.n / frac.d;}  
Run Code Online (Sandbox Code Playgroud)

这导致以下编译错误:

 error: ‘double fraction::operator=(double&, fraction&)’ must take exactly one argument  
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

mas*_*oud 2

如果您希望能够将 a 分配doublefraction您可以声明一个非显式构造函数:

fraction(double d = 0, double n = 1) : d(d), n(n) {}
Run Code Online (Sandbox Code Playgroud)

和反向

operator double() const { return n/d; }
Run Code Online (Sandbox Code Playgroud)

进而

fraction f;

f = 12.5;      // Assign a double to fraction

double x = f;  // Assign fraction as double to a double
Run Code Online (Sandbox Code Playgroud)