Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
anapshy
187 / 191 / 172
Регистрация: 14.11.2016
Сообщений: 744
Завершенные тесты: 3
#1

Class & operator's |Error: undefined reference to operator

04.04.2017, 16:35. Просмотров 231. Ответов 2
Метки нет (Все метки)

Компилирует нормально, но когда хочу использовать оператор выдает ошибку:undefined reference to 'operator..(Fraction const&,
Fraction const&)'

fraction.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#ifndef FRACTION_H_INCLUDED
#define FRACTION_H_INCLUDED
#include <iostream>
using namespace std;
class Fraction {
private:
    long long x;
    unsigned short y;
public:
    Fraction() : x(0), y(0){};
    Fraction(long long _x, unsigned short _y): x(_x), y(_y){};
    friend ostream& operator<<(ostream& os, const Fraction &X);
    friend Fraction operator+(const Fraction &X, const Fraction &Y);
    friend Fraction operator-(const Fraction &X, const  Fraction &Y);
    friend Fraction operator*(const Fraction &X, const Fraction &Y);
    friend const bool operator>(const Fraction &X, const Fraction &Y);
    friend const bool operator<(const Fraction &X, const Fraction &Y);
    friend const bool operator>=(const Fraction &X, const Fraction &Y);
    friend const bool operator<=(const Fraction &X, const Fraction &Y);
    friend const bool operator==(const Fraction &X, const Fraction &Y);
    friend const bool operator!=(const Fraction &X, const Fraction &Y);
    ~Fraction() {};
};
#endif // FRACTION_H_INCLUDED
fraction.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include "fraction.h"
 
ostream& operator <<(ostream &os, const Fraction &X){
    os << X.x << "." << X.y;
    return os;
}
 
const bool operator ==(const Fraction &X, const Fraction &Y){
    if((X.x==Y.x) && (X.y==Y.y)) return true;
    else                     return false;
}
 
const bool operator !=(const Fraction &X, const Fraction &Y){
    return !(X == Y);
}
 
const bool operator <=(const Fraction &X, const Fraction &Y){
    if ((X.x <= Y.x) && (X.y <= Y.y)) return true;
    else                          return false;
}
 
const bool operator >=(const Fraction &X, const Fraction &Y){
    if ((X.x >= Y.x) && (X.y >= Y.y)) return true;
    else                          return false;
}
 
const bool operator <(const Fraction &X, const Fraction &Y){
    if ((X.x < Y.x) && (X.y < Y.y)) return true;
    else                        return false;
}
 
const bool operator >(const Fraction &X, const Fraction &Y){
    if ((X.x > Y.x) && (X.y > Y.y)) return true;
    else                        return false;
}
 
Fraction operator +(const Fraction &X, const Fraction &Y){
    return Fraction(X.x+Y.x, X.y+Y.y);
}
 
Fraction operator -(const Fraction &X, const Fraction &Y){
    return Fraction(X.x - Y.x, X.y - Y.y);
}
 
Fraction operator *(const Fraction &X, const Fraction &Y){
    return Fraction(X.x * Y.x, X.y * Y.y);
}
main.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include "fraction.h"
 
using namespace std;
 
int main(void)
{
    Fraction X(2, 23), Y(2, 22);
    cout << "a: " << X << "   b: " << Y << endl << endl;
    cout << "a + b = " << X+Y << endl;
    cout << "a - b = " << X-Y << endl;
    cout << "a * b = " << X*Y << endl;
 
    if(X < Y) cout << "a < b" << endl;
    else      cout << "a > b" << endl;
 
    if(X == Y) cout << "a == b" << endl;
    else       cout << "a != b" << endl;
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.04.2017, 16:35
Ответы с готовыми решениями:

Ошибка undefined reference to `operator<<(std::ostream&, Account)'
Всем здравствуйте! На днях столкнулся с ошибкой, с которой еще не раз не...

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status
Здравствуйте. Вот недавно начал изучать книгу &quot;С++ для чайников&quot; Стефан Р....

Ошибка [Linker error] undefined reference to `Triangulation::distPoints(tagPOINT&, tagPOINT&)'
Добрый день, уважаемые форумчане есть функция которая считает площадь...

Перегрузка бинарного -, ошибка: undefined reference to operator -(.)
Никак не могу понять, в чём же ошибка Вот класс: class tDoubleString {...

Undefined reference to 'My_lab2::serialize_child(My_lab2::My_stack&,boost::interpro cess::file_lock&)')
Компилирую test: g++ test.cpp -L. -lwrk -lboost_serialization -o programwrk...

2
MrGluck
Модератор
Эксперт CЭксперт С++
8078 / 4930 / 1431
Регистрация: 29.11.2010
Сообщений: 13,357
04.04.2017, 16:47 #2
Всё работает.
Хочу отметить, что const квалификатор у возвращаемого типа просто игнорируется, так что уберите его.
1
anapshy
187 / 191 / 172
Регистрация: 14.11.2016
Сообщений: 744
Завершенные тесты: 3
04.04.2017, 16:52  [ТС] #3
MrGluck, перезапустил CodeBlock, всё работает. Ладно, спасибо, что время уделили.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.04.2017, 16:52

[Linker error] undefined reference to
#include&lt;string.h&gt; #include&lt;stdlib.h&gt; #include&lt;conio.h&gt; #include&lt;stdio.h&gt;...

[Linker Error] undefined reference to
Вызываю так функцию в main'e: #include &lt;cstdlib&gt; #include &lt;iostream&gt;...

Error undefined reference to `GetStockObject@4
Какую ему надо либу?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru