Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Переопределение операторов


Автор: шарлотта 9.4.2017, 16:26
Здравствуйте!
Подскажите, пожалуйста, как переопределить оператор + через += в классе векторов.
в h-файле пишу
Vect& operator +=(const  Vect &vect);

friend Vect operator +(const Vect &vect1, const Vect &vect2) const;

в cpp-файле
Vect& Vect::operator +=(const Vect &vect) {
    if (size != vect.size) {
        throw IncompatibleDimException();
    }
    for (int i = 0; i < size; i++) {
        elems[i] += vect.elems[i];
    }
    return (*this);
}

Vect operator +(const Vect &vect1, const Vect &vect2) const {
    Vect res(vect1);
    res += vect2;
    return res;
}
выдает ошибку error C2270: +: модификаторы недопустимы для функций, не являющихся членами.
Как можно исправить?

Автор: volatile 9.4.2017, 18:49
Цитата(шарлотта @  9.4.2017,  16:26 Найти цитируемый пост)
 модификаторы недопустимы для функций, не являющихся членами.
Как можно исправить?

ну дык удалить модификаторы.  smile 

Цитата(шарлотта @  9.4.2017,  16:26 Найти цитируемый пост)
Vect operator +(const Vect &vect1, const Vect &vect2) const {
    Vect res(vect1);
    res += vect2;
    return res;
}


Автор: шарлотта 9.4.2017, 19:20
Не предполагала, что ошибка в этом. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)