我有以下代码,我想将运算符重载应用于:
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);
}