小编Dav*_*ave的帖子

类模板的算术运算符重载,运算符应采用两个不同类型的类

我正在为分数创建模板类,分子和分母的类型可以是int,float或double。当重载算术或关系运算符时,当我尝试添加两个类(例如A类和B类)时,它会给出错误

在头文件“ fraction.h”中

#include<iostream>
using namespace std;

template <class T>
class fraction
{
friend ostream& operator<< <T>(ostream&, const fraction<T>&);
public:
fraction();
fraction<T>(T, T);
friend fraction<T> operator+(const fraction<T>&, const fraction<T>&);
private:
    T numerator;
    T denominator;
};

template <class T>
fraction<T>::fraction()
{
    numerator = 0;
    denominator = 1;
}

template <class T>
fraction<T>::fraction(T num, T denom)
{
    numerator = num;
    denominator = denom;
}
template <class T>
ostream& operator<<(ostream& osObject, const fraction<T>& frac)
{
osObject << frac.numerator << "/" << frac.denominator;
return …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading class-template c++17

2
推荐指数
1
解决办法
41
查看次数

标签 统计

c++ ×1

c++17 ×1

class-template ×1

operator-overloading ×1