小编Ahm*_*tah的帖子

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

我有一个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)

我究竟做错了什么?

c++ class operator-overloading assignment-operator

5
推荐指数
1
解决办法
1430
查看次数