хочу создать перегрузку оператора в myclass, с шаблоном класса
template <class T, class C>
T add (T a, C b...)
{
return (a+b);
}
class ComplexNo
{
public:
/*constuctors*/
// accesor functions
double RRAT() { return mRational; }
double IIMAG() { return mImmag; }
перегрузка по ошибке
ComplexNo operator+(const ComplexNo other)
const
{
return ComplexNo(mRational + other.mRational, mImmag + other.mImmag);
}
У меня проблема с этим:
template <class T>
ComplexNo operator+( T other)
{
return ComplexNo(mRational + (double)other, mImmag);
}
friend std::ostream& operator<<(std::ostream& stream, const ComplexNo& other);
private:
double mRational = 0, mImmag = 0;
};
std::ostream& operator << (std::ostream& stream, ComplexNo& other)
{
stream << " Rational part: " << other.RRAT()
<< " Irrat part" << other.IIMAG() << std::endl;
return stream;
}
int main()
{
ComplexNo c(10,20);
ComplexNo b(30,40);
ComplexNo q;
ComplexNo d = add(c, b, q, 99);
std::cout << d;
}
Ошибка компилятора в том, что он не может преобразовать ComplexNo
в T
и наоборот.
не должно быть конверсии