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

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

19.09.2013, 19:37. Показов 5955. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru