0 / 0 / 1
Регистрация: 23.03.2016
Сообщений: 76

Перегрузка бинарного -, ошибка: undefined reference to operator -(.)

13.03.2017, 22:42. Показов 1064. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не могу понять, в чём же ошибка

Вот класс:
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
class tDoubleString
{
public:
    char* str;
    size_t number_symvols;
 
public:
    tDoubleString();//стандартный конструктор
    friend tDoubleString operator -(tDoubleString& left,tDoubleString& right);
    ~tDoubleString();
 
};
 
tDoubleString::tDoubleString()
{
    str =new char[256];
    str[0] ='\0';
    number_symvols =0;
}
 
tDoubleString operator -(const tDoubleString& left, const tDoubleString& right)
{//ну вот что с ним не так?
tDoubleString temp;
    double d = atof(left.str) -atof(right.str);
    sprintf(temp.str, "%f",d);
    temp.number_symvols =strlen(temp.str);
return temp;
}
 
tDoubleString::~tDoubleString()
{
    if(str)
        delete str;
}
Неопределённая ссылка на оператор - ?
Полный текст ошибки: undefined reference to `operator-(tDoubleString&, tDoubleString&)'
Ну и вызов всего этого в мэйне:
C++
1
2
3
4
5
6
7
int main()
{
    tDoubleString test1,test2,test3;
    test3 =test2-test1;
    cout << "Hello world!" << endl;
    return 0;
}
Если что, вот оператор =:
C++
1
tDoubleString& operator =(const tDoubleString& right);
C++
1
2
3
4
5
6
7
8
tDoubleString& tDoubleString:: operator =(/*неявно: tDoubleString* this */const tDoubleString& right)
{
    if(this ==&right)
        return *this;
    strcpy(this->str, right.str);
    this->number_symvols =right.number_symvols;
return *this;
}
Равно работает, по крайней мере при test1 =test2. (Без использования минуса)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.03.2017, 22:42
Ответы с готовыми решениями:

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

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

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

4
 Аватар для Nishen
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,809
13.03.2017, 22:47
В объявлении функции необходимо добавить const в параметрах функции.
0
7803 / 6567 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
13.03.2017, 22:47
const где? Прототип должен точно совпадать.
0
 Аватар для Nishen
1355 / 854 / 365
Регистрация: 26.02.2015
Сообщений: 3,809
13.03.2017, 22:48
C++
1
friend tDoubleString operator-(const tDoubleString& left, const tDoubleString& right);
0
0 / 0 / 1
Регистрация: 23.03.2016
Сообщений: 76
13.03.2017, 23:36  [ТС]
Похоже, скинул не тот код
А не, тот. Но почему тогда ругалось не на функцию, а на вызов в мэйне?

Добавлено через 12 минут
Кстати, должен скинуть рабочий код, чтобы никто не путался


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
class tDoubleString
{
public:
    char* str;
    size_t number_symvols;
public:
tDoubleString();//стандартный конструктор
~tDoubleString();
friend tDoubleString operator -(const tDoubleString& left,const tDoubleString& right);
};
 
tDoubleString::tDoubleString()
{
    str =new char[256];
    str[0] ='\0';
    number_symvols =0;
}
 
tDoubleString::~tDoubleString()
{
    if(str)
        delete str;
}
 
tDoubleString operator -(const tDoubleString& left, const tDoubleString& right)
{
tDoubleString temp;
    double d = atof(left.str) -atof(right.str);
    sprintf(temp.str, "%f",d);
    printf("numbers: %s %s",left.str, right.str);
    printf("temp is %s",temp.str);
    temp.number_symvols =strlen(temp.str);
return temp;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.03.2017, 23:36
Помогаю со студенческими работами здесь

Undefined reference to `operator new[](unsigned int)'
Пишу программу на c++, компилирую в gcc 4.8.2. Строка: int* a = new int; приводит к ошибке при компиляции: /tmp/cctgidZP.o: In...

Ошибка . undefined reference to
При компиляции вылетает указанная ниже ошибка. В чем может быть проблем? Linux Часть кода #include &lt;pulse/simple.h&gt; #include...

Ошибка undefined reference
Имеется программа. Представляет из себя поисковую систему. Пишу в dev-cpp. При компиляции вылезает одна единственная ошибка...

Ошибка undefined reference to
Здравствуйте,столкнулся с проблемкой,никак не получается ее решить. Вот код: main: #include &lt;QApplication&gt; #include...

ошибка undefined reference to `_imp___ZN2sf5Image12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE'|
Привет! Такая проблема: подключил sfml к codeblocks и скопировал тестовый код, все работает. но когда пытаюсь загрузить изображение выдает...


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

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

Новые блоги и статьи
Как писать чистый, тестируемый и качественный код на Python
py-thonny 12.07.2025
Помню свой первый проект на Python. Работал тогда быстро, грязно, лишь бы работало. Код был похож на запутанный клубок - переменные по одной букве, функции на 200 строк, комментарии отсутствовали как. . .
Blazor и контроллер сервопривода IoT Meadow Maple
Wired 11.07.2025
Я решил разобраться, как можно соединить современные веб-технологии с миром "железа". Интересная комбинация получилась из Blazor в качестве веб-интерфейса и микроконтроллера Meadow с его веб-сервером. . .
Генерация OpenQASM из кода Q#
EggHead 10.07.2025
Летом 2024-го я начал эксперименты с библиотекой Q# Bridge, и знаете что? Она оказалась просто находкой для тех, кто работает на стыке разных квантовых экосистем. Основная фишка этой библиотеки -. . .
Изучаем новый шаблон ИИ-чата .NET AI Chat Web App
stackOverflow 10.07.2025
В . NET появилось интересное обновление - новый шаблон ИИ-чата под названием . NET AI Chat Web App. Когда я впервые наткнулся на анонс этого шаблона, то сразу понял, что Microsoft наконец-то. . .
Результаты исследования от команды ARP (июль 2025 г.)
Programma_Boinc 10.07.2025
Результаты исследования от команды ARP (июль 2025 г. ) Африканский проект по дождям (ARP) World Community Grid снова запущен! Мы рады поделиться обновленной информацией о нашем прогрессе с осени. . .
Angular vs Svelte - что лучше?
Reangularity 09.07.2025
Сегодня рынок разделился на несколько четких категорий: тяжеловесы корпоративного уровня (Angular), гибкие универсалы (React), прогрессивные решения (Vue) и новая волна компилируемых фреймворков. . .
Code First и Database First в Entity Framework
UnmanagedCoder 09.07.2025
Entity Framework дает нам свободу выбора, предлагая как Code First, так и Database First подходы. Но эта свобода порождает вечный вопрос — какой подход выбрать? Entity Framework — это. . .
Как использовать Bluetooth-модуль HC-05 с Arduino
Wired 08.07.2025
Bluetooth - это технология, созданная чтобы заменить кабельные соединения. Обычно ее используют для связи небольших устройств: мобильных телефонов, ноутбуков, наушников и т. д. Работает она на частоте. . .
Руководство по структурам данных Python
AI_Generated 08.07.2025
Я отчетливо помню свои первые серьезные проекты на Python - я писал код, он работал, заказчики были относительно довольны. Но однажды мой наставник, взглянув на мою реализацию поиска по огромному. . .
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах
Programma_Boinc 08.07.2025
Тестирование энергоэффективности и скорости вычислений видеокарт в BOINC проектах Опубликовано: 07. 07. 2025 Рубрика: Uncategorized Автор: AlexA Статья размещается на сайте с разрешения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru