Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 过载运算符+_C++_Operator Overloading - Fatal编程技术网

C++ 过载运算符+

C++ 过载运算符+,c++,operator-overloading,C++,Operator Overloading,简单的问题:我有一个简单的分数类,想重载操作符+。编译器返回错误运算符+本地函数定义非法 #pragma once #include <iostream> class simple_fraction { private: int numerator; //числитель int denominator; //знаменатель public: simple_fraction(int numerator, int denominator) { //о

简单的问题:我有一个简单的分数类,想重载操作符+。编译器返回错误运算符+本地函数定义非法

#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; //сумма
}
这有什么问题吗?

您有:

simple_fraction(int numerator, int denominator) {

   //определение основных математических операций для простой дроби
   double operator+ (double val) { return number + val; } //сложение
}}
这使得运算符+函数成为构造函数内部的局部函数,这是不允许的。您需要在运算符+函数之前完成构造函数定义。您还需要更正运算符中的操作数+

PS

operator+的实现听起来不正确。也许你的意思是:

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