Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/25: Рейтинг темы: голосов - 25, средняя оценка - 4.92
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737

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

19.09.2013, 19:37. Показов 5900. Ответов 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
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2013, 19:37
Ответы с готовыми решениями:

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

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

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

39
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.09.2013, 20:18
Студворк — интернет-сервис помощи студентам
Хулиган, А да кудаив вроде прав инлайн функции должны вроде полностью определяться в заголовочном файле.

Добавлено через 43 секунды
Ладно щас у себя попробую мб заработает.
1
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
19.09.2013, 20:22
Цитата Сообщение от _ Посмотреть сообщение
я скопировал эту программу себе в код блокс и все работает.
соврал. вообщем она компилировалась, но кода в main написал
C++
1
2
3
    Proc ppp;
 
    cin >> ppp;
то появилась эта ошибка
1
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.09.2013, 20:23
Хулиган, inline уберите и заработает.
1
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
19.09.2013, 20:23
надо поубирать все inline-ы, как написал кудаив
1
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
19.09.2013, 20:24
Хулиган, а если вообще inline убрать?
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.09.2013, 20:25
Хулиган, У меня не ругается компилирует нормально. Я в main их не использую просто подключаю #include "name.h". Попробуй просто их подключить без использования мб скомпилирует нормально, то тогда понятно будет что ошибка в самой функции.

Добавлено через 40 секунд
Визуал студио 2010 с инлайном компилирует нормально без ошибок.
0
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
19.09.2013, 20:27  [ТС]
Цитата Сообщение от Кудаив Посмотреть сообщение
а если вообще inline убрать?
гениально, как я понял если делать реализацию с хедере то надо инлайн, если реализация в срр то не надо)
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
19.09.2013, 20:32
Хулиган, заработало, нет?
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.09.2013, 20:34
Цитата Сообщение от Хулиган Посмотреть сообщение
гениально, как я понял если делать реализацию с хедере то надо инлайн, если реализация в срр то не надо)
Да молодец ты и меня просветил, оказывается с инлайнами ошибка, если просто то компилируется, а если с использованием функций, у меня писало ошибку ссылка на не разрешонный внешний символ, удалил инлайны заработало. Молодец будем теперь знать.

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

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

Добавлено через 2 минуты
Цитата Сообщение от Кудаив Посмотреть сообщение
заработало, нет?
изначально при совете убрать инлайны я их убирал только в реализации
0
погромист
 Аватар для coloc
415 / 251 / 30
Регистрация: 27.08.2012
Сообщений: 550
19.09.2013, 20:39
Цитата Сообщение от ninja2 Посмотреть сообщение
Просвети новичка!!!!

Не по теме:

ты же гуру. Зачем тебя просвещать? Ты же в каждой теме пишешь что С++ уже выучил :D

0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.09.2013, 20:43
Цитата Сообщение от Хулиган Посмотреть сообщение
.h файл подключи и будет счастье
Да подключил все работает, только с инлайн не работает, если без инлайна то работает, я вообще хочу узнать что дает нам инлайн. Правильно ж если функция определена инлайн, то ее код явно прописывается в программе, а если без инлайн, то просто хз. откуда происходит вызов функции, Так как вызов функции затратный, то мы и ставим инлайн, что бы как то оптимизировать программу, и программа с инлайн функциями по идее должна быть побольше размером той программы где функции не инлайн я прав???? Просто не охота экспериментировать.

Добавлено через 1 минуту
Цитата Сообщение от coloc Посмотреть сообщение
ты же гуру. Зачем тебя просвещать? Ты же в каждой теме пишешь что С++ уже выучил
У меня шаткие знания, я уверенно не могу сказать что именно так. Примерно знаю как, но не уверен что так. Знания еще не окрепли.
(гуру не должен отчитываться каждому зачем и почему )

Добавлено через 1 минуту
Хулиган, Просвети новичка!!!
0
 Аватар для Хулиган
88 / 83 / 21
Регистрация: 08.08.2012
Сообщений: 737
19.09.2013, 20:46  [ТС]
Цитата Сообщение от ninja2 Посмотреть сообщение
Просвети новичка!!!
что от меня требуется? я только сегодня узнал что такое .h файлы....гугл в помощь, ваша репутация не позволяет мне давать вам советы

Добавлено через 20 секунд
тема закрыта
1
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
19.09.2013, 20:46
Цитата Сообщение от ninja2 Посмотреть сообщение
просто хз. откуда происходит вызов функции
программа обращается по адресу функции, при инлайн код функции встраивается код функции
Цитата Сообщение от ninja2 Посмотреть сообщение
с инлайн функция по идее должна быть побольше той программы гед функции не инлайн
по идее - да, инлайн - это оптимизация и компилятор не обязан встраивать код такой функции в место вызова - существует ряд правил - функция становится не инлайн, если в ней есть ветвления, рекурсия, циклы...
1
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.09.2013, 20:50
Цитата Сообщение от Хулиган Посмотреть сообщение
что от меня требуется? я только сегодня узнал что такое .h файлы....гугл в помощь, ваша репутация не позволяет мне давать вам советы
Да ладно я не гордый. Я думал ты знаешь раз инлайн используешь, от решил воспользоваться возможностью и как бы невзначай спросить. Не переживай.

Кудаив, О я так и думал, но чото все время раньше когда встречал этот инлайн боялся его, ну щас уже вроде яснее стало, немножко яснее.
0
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
19.09.2013, 20:53
получается, если инлайнить функцию, то в .cpp файле ее не видно?
undefined reference to `operator>>(std::istream&, Proc&)'|
а только один ее прототип в .h файле
0
 Аватар для ninja2
979 / 196 / 33
Регистрация: 26.09.2012
Сообщений: 2,041
19.09.2013, 20:57
_, Ну у меня например такая ошибка с инлайн:
main.obj : error LNK2019: ссылка на неразрешенный внешний символ "class std::basic_ostream<char,struct std::char_traits<char> > & __cdecl operator<<(class std::basic_ostream<char,struct std::char_traits<char> > &,struct Proc const &)" (??6@YAAAV?$basic_ostream@DU?$char_trait s@D@std@@@std@@AAV01@ABUProc@@@Z) в функции _main
1>C:\test\test\Debug\test.exe : fatal error LNK1120: 1 неразрешенных внешних элементов

Если без инлайна то все компилируется хорошо.
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
19.09.2013, 20:58
_, как видно из вышерасположенных сообщений - некоторые компиляторы способны прососать код, как у ТС в топике
0
193 / 170 / 32
Регистрация: 09.09.2013
Сообщений: 522
19.09.2013, 21:00
Цитата Сообщение от ninja2 Посмотреть сообщение
Ну у меня например такая ошибка с инлайн:
это не ошибка, в целый роман зачитаться можно

Кудаив, у меня такая же ошибка
0
419 / 418 / 72
Регистрация: 27.05.2012
Сообщений: 1,168
19.09.2013, 21:09
MinGW 10.0 32bit - тасовал inline по всякому - туда сюда - работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2013, 21:09

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал (мат мет мод 29)
anaschu 23.06.2026
Многофункциональное здание: как одно здание порождает конфликты требований, которые никто не планировал Материалы для обсуждения с МГСУ · 2026 Рисунки внутри приложенного ворд файла. Что за. . .
28. Конкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энергоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерированы
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru