| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 Тема закрыта |