Создание всевозможных операторов перегрузки C++
существует класс, в котором я хочу реализовать операторы перегрузок для базовых математических действий. Я столкнулся с такой проблемой: функции операторов работают по одному и тому же принципу, но у них разная сигнатура. Как можно избавиться от данной проблемы и не писать:
class Test
{
double a;
public:
Test& operator +=(const int b);
Test& operator +=(const float b);
Test& operator +=(const double b);
};
Есть ли способ сказать, что для всех сигнатур вида:
const T
Будет работать одинаковая реализация?
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Ответ - шаблоны.
class Test
{
double a;
public:
template<typename T>
Test& operator +=(const T b);
Если надо только для типов, которые можно суммировать с double, то можно воспользоваться концептом convertible_to.
Еще я не очень понимаю, зачем ставить const при передаче аргумента по значению. Вот если бы передавали const T& - тогда дело другое.