2016-11-26 26 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

あなたがしている:。?

コンストラクタ内 operator+関数にローカル関数を作る
simple_fraction(int numerator, int denominator) { 

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

これは許可されていません。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; } 
関連する問題