Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > ошибка при перегрузке операторов << и унарный -


Автор: AlexZNew 4.5.2020, 14:58
Добрый день!
Возникает ошибка компоновщика при совместном употреблении перегруженных операторов
<< и унарный -
Вот отрывки из кода:
class FixedPoint {
public:
    FixedPoint(std::int16_t num, std::int8_t drob) : m_num(num), m_drob(drob) {}
    FixedPoint(double num);
    operator double() const {
        return 0.01 * m_drob + m_num;
    }
    FixedPoint operator-() {
        return FixedPoint(-m_num, -m_drob);
    }
    friend std::ostream& operator<< (std::ostream& out, const FixedPoint& point);
};
int main() {
    FixedPoint a(0.48);
    std::cout<<a;
    FixedPoint b = -a;
    std::cout<<b;
//-----все написанное выше собирается и выполняется без ошибок
    std::cout<<-a;  // вызывает ошибку компоновщика - Ошибка    LNK2019    ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char>, круглые скобки не помогают
}

Добавлено через 13 минут и 32 секунды
Вопрос решен:
в объявлении friend std::ostream& operator<< (std::ostream& out, const FixedPoint& point);
в реализации был пропущен const
Тема закрыта

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