Перегрузочный состав "+ =" Оператор как свободная функция - PullRequest
0 голосов
/ 01 апреля 2019

Как перегрузить + = для std :: array type, чтобы я мог сделать следующее

std::array<int, 3> x = {1,2,3}; 
std::array<int, 3> y = {4,5,6};
x += y;

1 Ответ

0 голосов
/ 01 апреля 2019

Если вы хотите перегрузить оператор для существующего типа, не изменяя этот тип, вы можете выбрать перегрузку, не связанную с элементом.

Здесь вы можете попробовать шаблонный подход, чтобы охватить все возможные массивы, если элементы могут быть добавлены:

template <class T, size_t n>
std::array<T,n>& operator+= (std::array< T, n>& l, const std::array<T, n> &r) {
    for (size_t i=0; i<n; i++)
        l[i] += r[i];
    return l; 
}

Демонстрация в сети

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...