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

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

Войти
Регистрация
Восстановить пароль
 
broDiaga_cpp
22 / 12 / 1
Регистрация: 20.02.2010
Сообщений: 181
#1

Вывести поля класса - C++

09.09.2013, 21:26. Просмотров 451. Ответов 6
Метки нет (Все метки)

Положим, есть класс A:
C++
1
2
3
4
5
6
class A
{
public:
int a,b,c,d;
// . . . какие-то функции
}
Как перегрузить оператор << чтобы можно было вывести все поля класса?
Может через макросы это можно сделать?
Чтобы постоянно не писать
C++
1
std::cout << object.a << object.b << object.c << object.d << std::endl;
а просто хочу написать
C++
1
std::cout << object << std::endl;
И чтобы вывелись все поля класса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2013, 21:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести поля класса (C++):

Использование в качестве поля класса указатель на объект другого класса - C++
Ошибка в названии - &quot;указателЯ&quot; Вот, пытаюсь освоить ООП (пока только учусь): создаю класс person (человек) и car (модель машины). ...

Друзья, подскажите, говорят, что можно поля класса инициализировать в момент объявления класса. Как это сделать? - C++
Скажу сразу, а то сейчас начнется, что я прекрасно понимаю, что поля класса при объявлении инициализировать нельзя. Можно конструктором при...

В конструкторе вложенного класса инициализируется приватное поле. Потом вызывается функция-метод этого класса и выводит значение этого поля НО НЕ ТО! - C++
Друзья! Почему так? #include &lt;windows.h&gt; #include &lt;iostream&gt; using namespace std; //Вот главный класс class A{ ...

Задачка для новичков #2: вывести в методе класса-родителя значение данных-членов из дочернего класса - C++
Вдохновленный соседней темой тоже решил задать свой вопрос таким же начинающим программистам как и я :) Все кто хочет попробовать дать...

Поля класса - C++
здравствуйте ) извините заранее если глупый вопрос :sorry: я просто новичок) class mycl { public: char a, b; }; ...

поля класса - C++
Задача заключается в поиске площади треугольника через класс. Программой должна быть предусмотрена проверка корректности ввода сторон...

6
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
09.09.2013, 21:49 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class A
{
    friend ostream &operator<<(ostream &o, const A &a);
    
public:
    int a, b, c, d;
};
 
 
ostream &operator<<(ostream &o, const A &a)
{
    o << a.a << a.b << a.c << a.d << endl;
    return o;
}
 
int main()
{
    A a;
    
    cout << a;
}
0
broDiaga_cpp
22 / 12 / 1
Регистрация: 20.02.2010
Сообщений: 181
09.09.2013, 22:01  [ТС] #3
А как-то без friend'а можно обойтись?
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
09.09.2013, 22:11 #4
broDiaga_cpp, да. если переменные a, b, c, d public, то эту функцию можно не делать friend

Добавлено через 45 секунд
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class A
{
public:
    int a, b, c, d;
};
 
 
ostream &operator<<(ostream &o, const A &a)
{
    o << a.a << a.b << a.c << a.d << endl;
    return o;
}
 
int main()
{
    A a;
    
    cout << a;
}
0
broDiaga_cpp
22 / 12 / 1
Регистрация: 20.02.2010
Сообщений: 181
09.09.2013, 22:14  [ТС] #5
Как член класса нельзя объявить? Ну и не френд в то же время!
0
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
09.09.2013, 22:18 #6
Цитата Сообщение от broDiaga_cpp Посмотреть сообщение
Ну и не френд в то же время!
не френд, но ведь члена класса получаются открытые. и любая функция может их изменить. лучше сделать их private)
0
rangerx
1937 / 1546 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
09.09.2013, 22:49 #7
Цитата Сообщение от broDiaga_cpp Посмотреть сообщение
Как член класса нельзя объявить?
Можно... естественно, если вас устраивает такая запись
C++
1
2
A obj;
obj >> std::cout;
0
09.09.2013, 22:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 22:49
Привет! Вот еще темы с ответами:

Поля дружественного класса - C++
есть примерно такой код class ClientAuthorization { public: int count; //считается в конструкторе, не буду писать весь код,...

Статические поля класса - C++
class mi { int a,b; public: mi(int a, int b) : a(a),b(b) {} void sw() { std::cout&lt;&lt;a&lt;&lt;&quot; - &quot;&lt;&lt;b&lt;&lt;std::endl; } ...

Константные поля класса - C++
Такой вопрос, как инициализировать константные поля класса? Работают конструкции вида obj():t(0){}; который используется в примере ниже. А...

Statiс Поля Класса - C++
Имея класс class Worker { static const int Part2 = 0x22; static const int Part3 = 0x44; public: static int Part1; ...


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

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

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