Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 18
1

Операция извлечения из потока для пользовательского типа

16.03.2013, 18:23. Показов 2226. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем доброго дня! Я тренируюсь перегружать операторы извлечения из потока и операторы передачи в поток. Операцию передачи в поток я перегрузила, в вот извлечение из потока что-то не работает, помогите плиз понять или я ее неправильно перегрузила или я ее неправилно вызываю в мейн?

//вот хедер файл
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using std::ostream;
using std::istream;
using std::cin;
using std::cout;
#include <iomanip>
using std::setw;
 
class PointP
{
public:
    friend ostream &operator<<(ostream &, const PointP &);
    friend istream &operator>>(istream &, PointP &);
    
    PointP(int = 0, int = 0);
    ~PointP();
private:
    int xCoordinate;
    int yCoordinate;
};

// файл реализации
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include "PointP.h"
 
ostream &operator<<(ostream & output, const PointP & myPoint)
{   output << "xCoordinate is " << myPoint.xCoordinate 
        << "\nyCoordinate is :" << myPoint.yCoordinate;
    return output;
}
 
istream &operator>>(istream & input, PointP &myPoint)
{   input >> setw(1) >> myPoint.xCoordinate;
    input.ignore();
    input >> setw(1) >> myPoint.yCoordinate;
    return input;
}
PointP::PointP(int x, int y)
    : xCoordinate(x), yCoordinate(y)
{   
}
 
PointP::~PointP(void)
{
}
// и вот мейн
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
#include <iomanip>
using std::left;
using std::right;
 
#include "PointP.h"
 
int main()
{   
    PointP object1(-9, 8);
    PointP object2();
    cout << object1;
    cout << "\nEnter data for a new object: " ;
    cin >> object2;  // вот тут компилятор ругается
    cin.get();
    return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.03.2013, 18:23
Ответы с готовыми решениями:

Перегрузка operator<< для пользовательского типа
Переписал пример из учебника, но компилятор (visual 2017) выдает кучу ошибок. Добавлять...

Явная специализация шаблона для пользовательского типа
Здравствуйте! Сразу извиняюсь если вопрос покажется глупым, перечитал справочник по шаблонам, но...

Перегрузить заданные операции для строк пользовательского типа
Для строк символов перезагрузить операции: &quot;-&quot; - унарный минус (переворачивает строку на своем...

Как создать шаблон для пользовательского и встроенного типа?
Есть перегруженные операторы класса: void String::operator=(const char *a){ //Перегрпуженный...

2
...
1906 / 1326 / 965
Регистрация: 12.02.2013
Сообщений: 2,172
16.03.2013, 19:19 2
В функции main 13-ая строчка. Если вы инициализируете объект без параметров, то скобок стоять не должно, ибо данная запись будет интерпретироваться компилятором как объявление прототипа функции.
1
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 18
16.03.2013, 19:24  [ТС] 3
Цитата Сообщение от anmartex Посмотреть сообщение
В функции main 13-ая строчка. Если вы инициализируете объект без параметров, то скобок стоять не должно, ибо данная запись будет интерпретироваться компилятором как объявление прототипа функции.

огромнейшее спасибо Вам! Скобки убрала и все работает теперь отлично!
0
16.03.2013, 19:24
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2013, 19:24
Помогаю со студенческими работами здесь

Перегрузить operator*() для перемножения матриц (объекты пользовательского типа Matrix)
Помогите доделать программу. Там нужно всего пару ошибок исправить... У меня уже мозг взрывается(((...

Можно ли присвоить объекту основного типа значение объекта пользовательского типа?
Правильно ли я понимаю, что SomeClass obj; int x = obj; или SomeClass obj; int x = 5 +...

Переделать код для работы с файловым вводом/выводом (работа с массивом объектов пользовательского типа)
Доброго времени суток! Можно ли переделать эту прогу на работу с файлом при помощи потоковых...

Операции левого и правого сдвигов для размещения в поток и извлечения из потока
Учусь в институте на заочке, к нам приехал интересный препод. И короче читал материал по джаве и си...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru