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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 51, средняя оценка - 4.61
morlord
2 / 2 / 0
Регистрация: 05.08.2010
Сообщений: 8
#1

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

09.12.2010, 10:43. Просмотров 7479. Ответов 5
Метки нет (Все метки)

нужно перегрузить оператор ввода для класса Comp? перегрузил, но выдается ошибка
error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>
при переходе к месту ошибки показывается следующий код в файле istream
C++
1
2
3
private:
    streamsize _Chcount;    // the character count
    };
мой код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Comp
{public:
//...
istream operator>>(istream &stream);
//...
}
 
istream Comp::operator>>(istream &stream)
{
    int type;
    stream>>_num;
    stream>>_cnum;
    stream>>IsWork;
    stream>>type;
    if (type==0) _type=office;
    if (type==1) _type=server;
    if (type==1) _type=monitoring;
    return stream;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 10:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора ввода ">>" (C++):

Перегрузка оператора "++" и "--" в чем может быть причина нарушение прав доступа? - C++
Вот такой вот код #include &lt;iostream&gt; class d { private: int size ; char *n; public: d()

Перегрузка оператора "++" и "--" , компилирует, но при запуске программы - ошибка - C++
#include &lt;iostream&gt; #include&lt;ctime&gt; #include&lt;stdio.h&gt; #include&lt;locale.h&gt; #include &lt;windows.h&gt; #include &lt;conio.h&gt; ...

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

Класс "Дробь". Перегрузка оператора "==" - C++
template &lt;class T&gt; void polynomial&lt;T&gt;::refresh(){ //отбрасывающую старшие члены полинома с нулевыми коэффициентами int counter = 0;...

Класс "Матрица", перегрузка оператора "+" - C++
Здравствуйте. Создаю класс матрица, в нём перегружаю оператор &quot;+&quot;. На этапе компиляции всё замечательно, но при запуске программа вылетает....

Перегрузка оператора "+", чтобы выполнял "*" - C++
Ребят, привет всем, возник такой вопрос: возможно ли перегрузить оператор &quot;+&quot; так, чтоб выполнялось умножение? Например вводится...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
LineStown
66 / 66 / 3
Регистрация: 04.08.2010
Сообщений: 420
Завершенные тесты: 1
09.12.2010, 11:00 #2
перезагрузка должна быть дружественной, т.к. используеться класс iostream и пользовательский,
C++
1
friend &istream operator>>(istream& s,Comp& c)
Ну по крайней мере так описывается в учебниках и примерах, которые я разбирал)
1
morlord
2 / 2 / 0
Регистрация: 05.08.2010
Сообщений: 8
09.12.2010, 21:39  [ТС] #3
операция может быть перегружена как дружественная функция и как функция класса
0
silent_1991
Эксперт С++
4964 / 3040 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
10.12.2010, 17:33 #4
morlord, да, эта операция может быть перегружена как функция класса. Но тогда вам придётся писать нелепое ObjectOfClass >> std::cin; Потому что если первый операнд перегруженной операции должен быть не экземпляром класса, операция обязательно должна быть перегружена как дружественная, а в нашем случае в качестве первого операнда используется объект класса iostream.
0
ForEveR
В астрале
Эксперт С++
7972 / 4734 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
10.12.2010, 17:35 #5
Не обязательно. Перегружать можно и вне класса.
0
Greeezly
6 / 6 / 1
Регистрация: 31.08.2012
Сообщений: 230
25.02.2014, 22:49 #6
C++
1
using std::istream;
C++
1
2
3
4
5
class ABC
{
public:
friend istream& operator>>(istream &, ABC &);
};
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2014, 22:49
Привет! Вот еще темы с ответами:

Перегрузка оператора "<<" для вывода пользовательских классов - C++
Всем доброго времени суток. Пытаюсь сделать перегрузку оператора &quot;&lt;&lt;&quot; для того, чтобы можно было выводить объекты пользовательского класса...

Перегрузка "оператора +" для сложения массива объектов - C++
Как перегрузить правильно оператор+ в данном случае или так делать нельзя? Ещё как-то туда надо передать размеры этого массива... и как...

Перегрузка операторов: Можно ли вынести "тело" оператора (расчеты) из H в CPP? - C++
Помогите новичку! Пишу класс и вынес его в отдельные файлы *.CPP и *.H Теперь пытаюсь переопределить операторы. Начал с = По примеру...

Перегрузка оператора вывода в классе "Время" - C++
Здравствуйте. Столкнулся с проблемой при работе с классом (Время), что выводит или чушь или вообще ничего не выводит. Прописал (вроде бы) 1...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
25.02.2014, 22:49
Ответ Создать тему
Опции темы

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