Перегрузка setw ()?

Я хотел бы, чтобы setw принял два параметра и вернул наибольшее.
Это возможно? Как мне это сделать? Не нужно искать код, просто какое-то направление было бы хорошо, так как я не мог найти четкий ответ онлайн.

0

Решение

Я не думаю, что ты можешь перегрузка это, но вы, безусловно, можете определить свой собственный тип с другим именем, а затем определить << а также >> операторы для него. Например:

struct setw_largest
{
int _value;
setw_largest(int value1, int value2) : _value(std::max(value1, value2)) {}
};

template<class _Elem, class _Traits, class _Arg>
inline basic_istream<_Elem, _Traits>& operator>>(basic_istream<_Elem, _Traits>& _Istr, const setw_largest& _Manip)
{
_Istr.width(_Manip._value);
return _Istr;
}

template<class _Elem, class _Traits, class _Arg>
inline basic_ostream<_Elem, _Traits>& operator<<(basic_ostream<_Elem, _Traits>& _Ostr, const setw_largest& _Manip)
{
_Ostr.width(_Manip._value);
return _Ostr;
}

std::cin >> setw_largest(1, 2) >> ...;
std::cout << setw_largest(1, 2) << ...;
3

Другие решения


По вопросам рекламы [email protected]