应用运算符重载

时间:2018-11-28 15:06:54

标签: c++ operator-overloading

我有以下代码,我想将运算符重载应用于:

template < class T>
class calc
{
public:

    T multiply(T x, T y);
    T add (T x, T y);
};

template < class T>
T calc<T>::multiply(T k1, T k2)
{
    return k1 * k2;
}

template < class T>
T calc<T>::add(T k1, T k2)
{
    return k1 + k2;
}

int main()
{
    calc<int> c;
    std::cout << c.multiply(1, 5);
}

我尝试实现运算符重载,但是我不完全了解如何进行调整。

这是我在下面的实现,但有一个错误:E0344此运算符函数的参数太多(calc operator *(T x,T y);)。

template < class T>
class calc
{
public:
    calc operator*(T x, T y);
    calc operator+(T x, T y);
};

template < class T>
calc<T> operator*(calc<T> const &k1, calc<T> const &k2)
{   
    return k1 * k2;
}

template < class T>
calc<T> operator+(calc<T> const &k1, calc<T> const &k2)
{
    return k1 + k2;
}


int main()
{

    calc<int> c;
    std::cout << c.operator*(1, 5);

}

0 个答案:

没有答案