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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
#1

Перегрузка оператора ввода, ошибка - C++

14.05.2011, 18:32. Просмотров 1141. Ответов 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
struct date_of_birth
{
    int year;
    int month;
    int day;
    date_of_birth(int year =0, int month =0, int day =0):year(year), month(month) ,day(day){}
    date_of_birth(const date_of_birth &a):year(a.year), month(a.month) ,day(a.day){}
    friend std::ostream &operator << (std::ostream &out,const date_of_birth &a)
    {
        out <<" year :" <<a.year
            <<" month: " << a.month
            << " day " << a.day;
        return out;
    }
    friend std::istream &operator >> (std::istream &in,const date_of_birth &a)
    {
        std::cout << " \nenter year ";
        std::cin >> a.year;
        std::cout << " \nenter month ";
        std::cin >> a.month;
        std::cout << " \nenter day ";
        std::cin >> a.day;
        return in;
    }
при компиляции ошибок нет но при вызове оператора ввода почему то происходит какойто вечный цикл... непонмаю почему... постоянно выводитса строка enter year а потом вылетает ошибка...
Код
Необработанное исключение в "0x00411829" в "1234.exe": 0xC00000FD: Stack overflow.
как я заметил после етой строки
C++
1
std::cin >> a.year;
вызываетса конструктор по умолчанию
C++
1
date_of_birth(int year =0, int month =0, int day =0):year(year), month(month) ,day(day){}
и потом снова
C++
1
std::cin >> a.year;
.... и так до ошибки... почему вообще этот конструтор тут вызываетса?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2011, 18:32
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора ввода, ошибка (C++):

В чем ошибка? Перегрузка оператора ввода\вывода - C++
Доброго времени суток. Где я допустил ошибку? Перегрузка оператора как-будто игнорируется. Выводит просто &quot;test&quot;, а я ожидаю &quot;: test&quot;. ...

Перегрузка оператора ввода >> - C++
При компиляции выдает такие ошибки, не могу разобраться в чем проблема. Ошибка LNK2019 ссылка на неразрешенный внешний символ...

Перегрузка оператора ввода - C++
почему не работает следующий код? class obj { unsigned int book_id; string title; unsigned price; public: obj(string i =...

Перегрузка оператора ввода - C++
Добрый вечер, уважаемые форумчане. Возник вопрос о перегрузке оператора ввода. Имеется класс string class String{ ...

Перегрузка оператора ввода - C++
Добрый день, есть вот такая штуковина: // в M.matrix лежат значения элементов матрицы // цикл по 4, потому что квадратная их 4-х...

Перегрузка оператора ввода - C++
Данные вводятся в виде std::istream&amp; operator &gt;&gt; (std:: istream&amp; in,const Przedzial&amp; pol) { in &gt;&gt; &quot;&quot;; return in; } Но...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
14.05.2011, 18:39 #2
C++
1
in >> a.year;
mansp
18 / 18 / 0
Регистрация: 07.11.2010
Сообщений: 136
14.05.2011, 18:41  [ТС] #3
кто знает а?

Добавлено через 33 секунды
Цитата Сообщение от ValeryLaptev Посмотреть сообщение
C++
1
in >> a.year;
так тоже делал... не работает....
ValeryLaptev
Эксперт С++
1040 / 819 / 48
Регистрация: 30.04.2011
Сообщений: 1,659
14.05.2011, 18:46 #4
C++
1
2
3
4
5
friend std::istream &operator >> (std::istream &in, date_of_birth &a)
        {
                in >> a.year >> in >> a.month >> in >> a.day;
                return in;
        }
D главной функции:
C++
1
2
 date_of_birth D;
cout << "Дайте дату: "; cin >> D;
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
14.05.2011, 19:59 #5
Не знаю что должна делать ваша программа и где ваш main, но чтобы не было преобразования по умолчанию можно добавить перед конструктором ключевое слово explicit. Также добавлю что перегрузка операторов ввода и вывода осуществляется вне границ класса/структуры.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.05.2011, 19:59
Привет! Вот еще темы с ответами:

Перегрузка оператора ввода - C++
Всем привет. Я хочу попробовать написать свой класс string. Вот пока собственно класс:class string { private: char* str; ...

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

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

Перегрузка оператора ввода вывода - C++
Есть два хэдера(header.h и Array.h) и исполняемая программа main.cpp в которой я как раз и обращаюсь к оператору ввода Array.h ...


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

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

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