Eri*_*cis 2 c++ operator-overloading
我正在进行C++第498页的练习11.11,如何编写第8版.
问题是:创建一个具有以下功能的RationalNumber(fractions)类:a)创建一个构造函数,防止分数中的0分母,减少或简化非简化形式的分数并避免负分母b)重载加法此类的减法运算,乘法运算和除法运算符c)重载此类的关系运算符和相等运算符
我正在重载加法运算符.
我已经完成了一个,但我没有在任何地方超载.我已经在互联网上搜索了更好的解释,但我只是没有理解如何使用用户定义的类型重载运算符的概念.
每个RationalNumber都有一个分子和一个分母,它们组合成一个分数.我需要将它们加在一起,找到共同点,等等.
因此,我的RationalNumber.h是:
// RationalNumber.h
// RationalNumber class definition
#ifndef RATIONALNUMBER_H
#define RATIONALNUMBER_H
#include <iomanip>
#include <iostream>
#include <string>
using namespace std;
class RationalNumber
{
public:
RationalNumber( int numerator, int denominator);
void setNumerator(int numerator);
int getNumerator();
void setDenominator(int denominator);
int getDenominator();
void printRationalNumber();
RationalNumber operator+(Rationalnumber a, RationalNumber b);
private:
int numerator; //top number
int denominator; //bottom number
};
#endif
Run Code Online (Sandbox Code Playgroud)
现在,只关注我的操作符+功能:
RationalNumber RationalNumber::operator+(RationalNumber a, RationalNumber b)
{
}
Run Code Online (Sandbox Code Playgroud)
Visual Studio告诉我类Rationaloperator没有成员"operator +"
任何帮助,将不胜感激.
谢谢,埃里克
更新:
我现在有:
RationalNumber operator+(Rationalnumber a);
Run Code Online (Sandbox Code Playgroud)
和
RationalNumber RationalNumber::operator+(RationalNumber a)
{
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:减速是不兼容的.....(<error_type> a)
+
是一个二元运算符.如果你使它成为一个成员,它应该只接受一个参数,因为调用对象是左操作数.
另请注意,您不必将其设为会员.我通常做的是operator+=
作为成员实现,然后operator+
作为利用的自由功能operator+=
.这具有可以隐式转换左或右操作数的优点.例如,如果RationalNumber类具有以下隐式转换double
:
RationalNumber r1,r2;
r1 = r2 + 3.14; // this will work either way
r1 = 3.14 + r2; // can't do this if operator+ is a member
Run Code Online (Sandbox Code Playgroud)
至于有关不兼容声明的错误:
RationalNumber operator+(Rationalnumber a);
^
Should be a capital N
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1422 次 |
最近记录: |