#c #operator-overloading
#c #оператор-перегрузка
Вопрос:
Как перегрузить = для типа std::array, чтобы я мог выполнить следующее
std::array<int, 3> x = {1,2,3};
std::array<int, 3> y = {4,5,6};
x = y;
Комментарии:
1. Вы пробовали
std::array<int, 3>amp; operator =(std::array<int, 3>amp; lhs, const std::array<int, 3>amp; rhs) { ... }
?2.
std::valarray
может быть лучшим выбором, чемstd::array
здесь.
Ответ №1:
Если вы хотите перегрузить оператор для существующего типа, не изменяя этот тип, вы можете выбрать перегрузку, не являющуюся членом.
Здесь вы можете попробовать шаблонный подход, чтобы охватить все возможные массивы, если элементы могут быть добавлены:
template <class T, size_t n>
std::array<T,n>amp; operator = (std::array< T, n>amp; l, const std::array<T, n> amp;r) {
for (size_t i=0; i<n; i )
l[i] = r[i];
return l;
}