2016-11-26 5 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; } 
Смежные вопросы