Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.73
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
#1

Перегрузка операторов ввода вывода - C++

19.09.2013, 19:37. Просмотров 1637. Ответов 39
Метки нет (Все метки)

в .h файле сделал объявление
C++
1
2
inline ostream& operator <<(ostream&, const Proc&);
inline istream& operator >>(istream&, Proc&);
в .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
inline istream& operator >>(istream& is, Proc& obj)
{
    short val;
 
    cout << "Name: ";
    is >> obj.name;
    cout << "Number: ";
    is >> obj.num;
 
    for(int i=0; i<obj.num; ++i)
    {
        is >> val;
        obj.col.push_back(val);
    }
    return is;
}
 
inline ostream& operator <<(ostream& os, const Proc& obj)
{
    os << "Name: " << obj.name << endl;
    os << "Numbers: " << obj.num << endl;
    for(int i=0; i<obj.num; i++)
        os << i+1 << ". " << obj.col[i] << endl;
 
    return os;
}
компилятор ругается на оператор ввода ошибка: undefined reference to `operator>>(std::istream&, Proc&)'
до переноса реализации из хедера в срр все работало
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.09.2013, 19:37
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка операторов ввода вывода (C++):

Перегрузка операторов ввода/вывода. - C++
Класс комплексных чисел. Нужно чтобы программа выводила и вводила в таком виде (функции in и out): #include &lt;iostream&gt; #include...

Перегрузка операторов ввода вывода - C++
ребята болит уже голова)) main.cpp #include &quot;myStr.h&quot; int main() { myStr myS(&quot;ok&quot;); cout&lt;&lt;myS&lt;&lt;endl;//надо чтоб...

Перегрузка операторов ввода\вывода - C++
Вот такой простенький пример описан во многих постах, есть в некоторых видео но у меня в компиляторе mvs 2015, при компиляции выдает...

Перегрузка операторов ввода/вывода - C++
Вроде сделал, но не работает перегрузка оператора ввода. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...

Перегрузка операторов ввода и вывода - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class ComplexNumber { private: double a, b; ...

Перегрузка операторов ввода-вывода - C++
Доброго времени суток! Почему перестал работать &gt;&gt; оператор для стандартного типа char. Перегруженная операция cin&gt;&gt;one возвращает все...

39
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
19.09.2013, 20:13 #16
Хулиган, я скопировал эту программу себе в код блокс и все работает. так что проблема наверно в другом.
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 20:14 #17
Цитата Сообщение от Хулиган Посмотреть сообщение
а .h файл я тогда для чего подключаю оператор вывода работает хотя тоже использует те типы что и оператор ввода..там чтот другое
Вообще можно и в одном подключать, если память не подводить это один из советов или я ошибаюсь, но я в каждом файле как правило подключаю. Уни у тебя все рамно один раз подключаться хоть ты их сто раз будешь подключать. Это вроде признак хорошего тона или хз.
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
19.09.2013, 20:15  [ТС] #18
Цитата Сообщение от ninja2 Посмотреть сообщение
Попробуй так файлы назвать
это типо уже тролинг? я как бы ясно написал кроме операторов в .срр есть реализации функций определенных в хедере и они работают, с названиями файлов все ОК!
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
19.09.2013, 20:16 #19
Хулиган, убери inline перед функциями в cpp
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
19.09.2013, 20:17  [ТС] #20
Цитата Сообщение от Кудаив Посмотреть сообщение
убери inline перед функциями в cpp
не помогает, опять ругается только на оператор ввода ошибку я писал но все же
ошибка: undefined reference to `operator>>(std::istream&, Proc&)'
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 20:18 #21
Хулиган, А да кудаив вроде прав инлайн функции должны вроде полностью определяться в заголовочном файле.

Добавлено через 43 секунды
Ладно щас у себя попробую мб заработает.
1
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
19.09.2013, 20:22 #22
Цитата Сообщение от _ Посмотреть сообщение
я скопировал эту программу себе в код блокс и все работает.
соврал. вообщем она компилировалась, но кода в main написал
C++
1
2
3
    Proc ppp;
 
    cin >> ppp;
то появилась эта ошибка
1
alsav22
5426 / 4821 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 20:23 #23
Хулиган, inline уберите и заработает.
1
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
19.09.2013, 20:23 #24
надо поубирать все inline-ы, как написал кудаив
1
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
19.09.2013, 20:24 #25
Хулиган, а если вообще inline убрать?
1
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 20:25 #26
Хулиган, У меня не ругается компилирует нормально. Я в main их не использую просто подключаю #include "name.h". Попробуй просто их подключить без использования мб скомпилирует нормально, то тогда понятно будет что ошибка в самой функции.

Добавлено через 40 секунд
Визуал студио 2010 с инлайном компилирует нормально без ошибок.
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
19.09.2013, 20:27  [ТС] #27
Цитата Сообщение от Кудаив Посмотреть сообщение
а если вообще inline убрать?
гениально, как я понял если делать реализацию с хедере то надо инлайн, если реализация в срр то не надо)
0
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,168
Завершенные тесты: 2
19.09.2013, 20:32 #28
Хулиган, заработало, нет?
0
ninja2
231 / 187 / 7
Регистрация: 26.09.2012
Сообщений: 2,018
Завершенные тесты: 1
19.09.2013, 20:34 #29
Цитата Сообщение от Хулиган Посмотреть сообщение
гениально, как я понял если делать реализацию с хедере то надо инлайн, если реализация в срр то не надо)
Да молодец ты и меня просветил, оказывается с инлайнами ошибка, если просто то компилируется, а если с использованием функций, у меня писало ошибку ссылка на не разрешонный внешний символ, удалил инлайны заработало. Молодец будем теперь знать.

Добавлено через 1 минуту
Хулиган, Слышишь давай еще уточним, а что значит если функция определена как инлай, это значит что ее код явно прописывается в программе. А если просто функция без инлайн, то тогда что в программе ставится пометка вызвать такую то функцию? Просвети новичка!!!!
0
Хулиган
85 / 80 / 12
Регистрация: 08.08.2012
Сообщений: 737
19.09.2013, 20:39  [ТС] #30
Цитата Сообщение от Кудаив Посмотреть сообщение
заработало, нет?
да

Добавлено через 1 минуту
Цитата Сообщение от ninja2 Посмотреть сообщение
Просвети новичка!!!!
.h файл подключи и будет счастье

Добавлено через 2 минуты
Цитата Сообщение от Кудаив Посмотреть сообщение
заработало, нет?
изначально при совете убрать инлайны я их убирал только в реализации
0
19.09.2013, 20:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.09.2013, 20:39
Привет! Вот еще темы с ответами:

Перегрузка операторов ввода и вывода - C++
Добрый вечер! Помогите с задачкой.Я создал класс очередь и класс массив очередей.задача готова, но препод потребовал перегрузить оператор...

Перегрузка операторов потокового ввода вывода - C++
Есть класс &quot;деканат&quot;, полем которого есть список студентов, объектов из класса &quot;Студент&quot;. Как переопределяя операторы &quot;&gt;&gt;&quot; &quot;&quot;&lt;&lt;&quot; вывести...

Перегрузка операторов присваивания, ввода, вывода - C++
Приветствую, помогите реализовать перегрузку операторов(в частности операторы присваивания, ввода, вывода) для данной программы. Я не могу...

Перегрузка операторов потокового ввода-вывода - C++
Пожалуйста, ответе на такой вопрос: почему при написании класса, при перегрузке операторов ввода-вывода, их обязательно нужно объявлять в...


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

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

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