重载运算符+

时间:2016-11-26 07:27:30

标签: c++ operator-overloading

简单的问题:我有一个类simple_fraction,想要重载operator" +"。 Complilator返回错误" operator + local function definition是非法的。

#pragma once
#include <iostream>

class simple_fraction {
private:
    int numerator; //числитель
int denominator; //знаменатель
public:
    simple_fraction(int numerator, int denominator) {

    //определение основных математических операций для простой дроби
    double operator+ (double val) { return number + val; } //сложение
}}

int main()
{
simple_fraction fr(2, 3);
double sum = fr + 10; //сумма
}

这有什么问题?

1 个答案:

答案 0 :(得分:1)

你有:

simple_fraction(int numerator, int denominator) {

   //определение основных математических операций для простой дроби
   double operator+ (double val) { return number + val; } //сложение
}}

使operator+函数成为构造函数中的局部函数,这是不允许的。您需要在operator+函数之前完成构造函数定义。您还需要更正operator+

中的操作数
simple_fraction(int numerator, int denominator) : numerator(numerator),
                                                  denominator(denominator){}

double operator+ (double val) { return numerator + val; }

<强> PS

operator+的实施听起来不对。也许你的意思是:

double operator+ (double val) { return 1.0*numerator/denominator + val; }