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

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

Войти
Регистрация
Восстановить пароль
 
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
#1

Написание класса Person с перегруженными операторами чтения, сравнения и записи - C++

25.04.2010, 22:35. Просмотров 529. Ответов 9
Метки нет (Все метки)

Товарищи, я тут решила сесть и написать прогу. Но я немного в синтаксис вообще не врубаюсь.
Помогите, кому не трудно, одну хнюшку написать, я все дальше сама догоню, просто посмотрю, как писать вообще надо.

нужно написать класс (обзовем Person) с перегруженными операторами чтения ( то бишь >>), сравнения и записи ( <<)

эт все)
я просто вообще не догоняю буковки, по справочнику порылась - вроде поняла, но вроде нихр...ничего не выходит.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.04.2010, 22:35     Написание класса Person с перегруженными операторами чтения, сравнения и записи
Посмотрите здесь:

Передача в шаблон класса с перегруженными операторами - C++
У меня есть класс TProc: template&lt;class Type&gt; class TProc { private: Type Lop_Res; Type Rop; string operation; public: ...

Ошибка. Матрица с перегруженными операторами - C++
Здравствуйте, Прошу помочь с ошибкой: Студия не принимает строку: m3 = m1 + m2; // Error 2 error C2110: '+' : cannot add two point...

Создать класс Person со свойствами name, gender, age, married и методами чтения/установки этих свойств - C++
Задание: Код: Person.h #include &lt;string&gt; #ifndef PERSON_H #define PERSON_H class Person { private: bool gender,...

Описание класса с именем PERSON - C++
Описание класса. Запишите описание класса с именем PERSON, содержащего следующие поля: фамилия и инициалы; дата рождения...

Как вызвать функцию-член правильно для класса Person - C++
Задача простая, ввести фамилию и имя и вывести их. Подскажите, как правильно написать функцию вывода print(). Если один параметр...

Вывод полей класса после сравнения - C++
Проблема: (Нужно отыскать нужный фильм и вывести данные об нем.) Если еще конкретнее, то почему после успешного сравнения некорректно...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.04.2010, 23:00     Написание класса Person с перегруженными операторами чтения, сравнения и записи #2
Тиша, для вывода так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
 
const int max_lenght = 256;
 
class Person {
  friend std::ostream& operator << (std::ostream& os, const Person& person);
public:
  Person(const char* name) {
    strcpy(_name, name);
  }
private:
  char _name[max_lenght];
}
 
std::ostream& operator << (std::ostream& os, const Person& person) {
  return os << person._name << std::endl;
}
Для ввода практически идентично.
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
25.04.2010, 23:05  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #3
пхах, ругаеться))
Спасибо))
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
25.04.2010, 23:36     Написание класса Person с перегруженными операторами чтения, сравнения и записи #4
Тиша, кто, на что и как ругается.
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
27.04.2010, 10:42  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #5
на 15 строчку:

Person: нет подходящего конструктора по умолчанию
os: необъявленный идентификатор
синтаксическая ошибка: const

я просто еще не разобралась, щас разберусь, сама думаю все сделаю.

Добавлено через 11 минут
конструктор я нарисовала, на остальное ругается

Добавлено через 44 минуты
ррррррррр....
не въезжаю...
мож по строчкам объяснить, что и где мы делаем, пожалуйста)

Добавлено через 37 минут
я поняла что я не понимаю. Не понимаю я перегрузку операторов. Ну вообще никак. Литературу - читала, на лекциях - записывала, всё равно не понимаю, КАК вообще это пишется (синтаксис всмысле)

Добавлено через 8 минут
так...если в 13 поставить ; то ругаеться только на strcpy
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 15:36  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #6
Товарищи, ну кому не трудно, объясните девушке что это вообще такое, ну не понимаю я((
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
01.05.2010, 15:44     Написание класса Person с перегруженными операторами чтения, сравнения и записи #7
для strcpy() нада подключить <string.h>
тобиш написать самого верху #include <string.h>
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 15:50  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #8
да это я подключила, все равно кручу-верчу, и не виходит
CyBOSSeR
Эксперт C++
2300 / 1670 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
01.05.2010, 16:19     Написание класса Person с перегруженными операторами чтения, сравнения и записи #9
Тиша, вот полный пример:
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
27
#include <iostream>
#include <cstring>
 
const int max_lenght = 256;
 
class Person {
  friend std::ostream& operator << (std::ostream& os, const Person& person);
public:
  Person(const char* name) {
    std::strcpy(_name, name);
  }
private:
  char _name[max_lenght];
};
 
std::ostream& operator << (std::ostream& os, const Person& person) {
  return os << person._name;
}
 
int main()
{
  Person person("Test person");
 
  std::cout << person << std::endl;
 
  return 0;
}
Класс Person имеет один конструктор, принимающий строку name (строки 9-11). Данный конструктор копирует переданную строку во внутреннюю переменную _name. Вызов данного конструктора происходит в строке 22.
Бинарный оператор:
C++
1
2
3
std::ostream& operator << (std::ostream& os, const Person& person) {
  return os << person._name;
}
принимает первым (левым) параметром ссылку на экземпляр потока вывода класса std::ostream (коем является std::cout), вторым (правым) константную ссылку на экземпляр класса Person.
Вызов данного оператора представлен в строке:
C++
1
std::cout << person ...;
Как видишь слева в данном выражении стоит экземпляр класса std::ostream, а справа экземпляр Person. Компилятор ищет оператор, принимающий данные аргументы, и успешно находит, приведенный выше.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.05.2010, 16:58     Написание класса Person с перегруженными операторами чтения, сравнения и записи
Еще ссылки по теме:

Реализовать операторы сравнения двух экземпляров класса (==, !==) - C++
Приведите пример такой перегрузки, пожалуйста

Зацените программу сравнения двух чисел с помощью класса - C++
#include &lt;math.h&gt; #include &lt;stdlib.h&gt; #include &lt;iostream.h&gt; class MyClass{ int x,y; public: MyClass(int x1, int y1){ x =...

Блокировка чтения-записи в QNX - C++
Дорогие товарищи помогите пожалуйста написать программу. 1. Пользователь вводит данные с клавиатуры и число читателей. Писатель N-ое...

Ошибка записи и чтения объектов - C++
Всем привет. Говорю сразу: Кто сделает этот код рабочим, заплачу 300 р. на PayPal аккаунт (если таковой имеется) Делаю задание...


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

Или воспользуйтесь поиском по форуму:
Тиша
1 / 1 / 0
Регистрация: 02.11.2009
Сообщений: 75
01.05.2010, 16:58  [ТС]     Написание класса Person с перегруженными операторами чтения, сравнения и записи #10
О))Спасибо))))вроде все поняла)))спасибо-спасибо-спасибо))
Yandex
Объявления
01.05.2010, 16:58     Написание класса Person с перегруженными операторами чтения, сравнения и записи
Ответ Создать тему
Опции темы

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