Я пытаюсь перегрузить оператор <<, чтобы вывести класс рационального числа, который представляет собой рациональное число. </p>
Функция выглядит так:
ostream &operator<<(ostream &os, const rational_t& r)
{
os << r.get_num() << "/" << r.get_den() << "=" << r.value() << endl;
return os;
}
Хорошо компилируется без использования.Но когда я пытаюсь использовать его на главной странице, он жалуется так: неопределенные символы для архитектуры x86_64: "operator << (std :: __ 1 :: basic_ostream> &, рациональный_t const &)"
Есть идеи?Спасибо!
main:
#include <iostream>
#include <cmath>
#include <vector>
#include "rational_t.hpp"
using namespace std;
int main()
{
cout << a; // Problem here..
}
Класс cpp:
#include <iostream>
#include <math.h>
#include <fstream>
#include "rational_t.hpp"
rational_t::rational_t(const int n, const int d)
{
assert(d != 0);
num_ = n, den_ = d;
}
// Other class methods here..
ostream &operator<<(ostream &os, rational_t &r)
{
os << r.get_num() << "/" << r.get_den() << "=" << r.value() << endl;
return os;
}
Класс hpp:
#pragma once
#include <iostream>
#include <cassert>
#include <cmath>
#include <fstream>
#define EPSILON 1e-6
using namespace std;
class rational_t
{
int num_, den_;
public:
rational_t(const int = 0, const int = 1);
~rational_t() {}
// Other methods like get_num(), get_den(), set... HERE
rational_t operator+(const rational_t&);
rational_t operator-(const rational_t&);
rational_t operator*(const rational_t&);
rational_t operator/(const rational_t&);
void write(ostream &os = cout) const;
void read(istream &is = cin);
friend ostream &operator<<(ostream &os, const rational_t&);
};