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)
我究竟做错了什么?
如果您希望能够将 a 分配double给fraction您可以声明一个非显式构造函数:
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)