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

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

Войти
Регистрация
Восстановить пароль
 
solomon123
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 18
#1

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

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

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

//вот хедер файл
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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2013, 18:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Операция извлечения из потока для пользовательского типа (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
anmartex
...
1703 / 1196 / 496
Регистрация: 12.02.2013
Сообщений: 1,978
16.03.2013, 19:19 #2
В функции main 13-ая строчка. Если вы инициализируете объект без параметров, то скобок стоять не должно, ибо данная запись будет интерпретироваться компилятором как объявление прототипа функции.
solomon123
0 / 0 / 0
Регистрация: 25.01.2013
Сообщений: 18
16.03.2013, 19:24  [ТС] #3
Цитата Сообщение от anmartex Посмотреть сообщение
В функции main 13-ая строчка. Если вы инициализируете объект без параметров, то скобок стоять не должно, ибо данная запись будет интерпретироваться компилятором как объявление прототипа функции.

огромнейшее спасибо Вам! Скобки убрала и все работает теперь отлично!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.03.2013, 19:24
Привет! Вот еще темы с ответами:

Операция std::cout для Объекта типа std::string - C++
Кто детально объяснит почему не выводит ? Дает вот так &quot;Отсутствует оператор &quot;&lt;&lt;&quot;, соответствующий этим операндам&quot; void...

Создание пользовательского типа данных - C++
Здравствуйте, мне нужно создать свой тип данных,чтобы он мог принимать ограниченное количество целых значений (например, от 0 до 50). Как...

Вектор пользовательского типа данных - C++
Имеется класс: class Students { public: void set_name(string student_name) { name = student_name;...

Преобразование пользовательского типа, friend - C++
Этот код не работает, потому что класс X ничего не знает о классе Y? Ошибки:Error 5 error C2679: binary '=' : no operator found which...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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