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

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

Восстановить пароль Регистрация
 
broDiaga_cpp
 Аватар для broDiaga_cpp
19 / 9 / 1
Регистрация: 20.02.2010
Сообщений: 180
09.09.2013, 21:26     Вывести поля класса #1
Положим, есть класс 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;
И чтобы вывелись все поля класса.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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;
}
broDiaga_cpp
 Аватар для broDiaga_cpp
19 / 9 / 1
Регистрация: 20.02.2010
Сообщений: 180
09.09.2013, 22:01  [ТС]     Вывести поля класса #3
А как-то без friend'а можно обойтись?
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;
}
broDiaga_cpp
 Аватар для broDiaga_cpp
19 / 9 / 1
Регистрация: 20.02.2010
Сообщений: 180
09.09.2013, 22:14  [ТС]     Вывести поля класса #5
Как член класса нельзя объявить? Ну и не френд в то же время!
User409368
191 / 168 / 6
Регистрация: 09.09.2013
Сообщений: 524
09.09.2013, 22:18     Вывести поля класса #6
Цитата Сообщение от broDiaga_cpp Посмотреть сообщение
Ну и не френд в то же время!
не френд, но ведь члена класса получаются открытые. и любая функция может их изменить. лучше сделать их private)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.09.2013, 22:49     Вывести поля класса
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
09.09.2013, 22:49     Вывести поля класса #7
Цитата Сообщение от broDiaga_cpp Посмотреть сообщение
Как член класса нельзя объявить?
Можно... естественно, если вас устраивает такая запись
C++
1
2
A obj;
obj >> std::cout;
Yandex
Объявления
09.09.2013, 22:49     Вывести поля класса
Ответ Создать тему
Опции темы

Текущее время: 21:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru