2016-11-26 137 views
-4

简单的问题:我有一个类simple_fraction,并希望重载运算符“+”。 Complilator返回错误“运营商+本地函数的定义是非法重载运算符+

#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

您有:?

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; }