简单的问题:我有一个类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; //сумма
}
这有什么问题?
答案 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; }