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

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

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

Конструктор в качестве параметра operator<< - C++

30.12.2016, 16:39. Просмотров 210. Ответов 12
Метки нет (Все метки)

Подскажите как правильно перегрузить operator<<
чтобы в поток выводить явновызываемый конструктор класса.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.12.2016, 16:39
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Конструктор в качестве параметра operator<< (C++):

Неверное значение при передаче параметра в метод operator= - C++
Здравствуйте. Есть код vector.h #pragma once //#include &quot;vector.h&quot;

Функция в качестве параметра - C++
Я не знаю, как передать функцию в качестве параметра. При обработке программа никаких ошибок не выдает, но результат печатает неверный. ...

Передача функции в качестве параметра - C++
Как передать функцию с параметрами в transform? Т.е., например, мне надо из каждого числа вектора вычесть число k с помощью transform'а,...

Передача файла в качестве параметра - C++
Как, в качестве параметра, передать функции файл и структуру??? Добавлено через 1 час 1 минуту Разве никто не знает???

Передать функцию в качестве параметра - C++
Нужно передать функцию func в качестве параметра для функции palindrom. Как это сделать? желательно не через указатель int func(int n)...

Структура в качестве параметра шаблона - C++
Добрый день, возник вопрос при выполнении КР по программированию: Можно ли передать структуру в качестве параметра в шаблона класса. То...

12
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
30.12.2016, 16:45 #2
Цитата Сообщение от antiscaliger Посмотреть сообщение
чтобы в поток выводить явновызываемый конструктор класса.
Конструктор - это функция, её нельзя в поток вывести.
0
GbaLog-
Любитель чаепитий
3122 / 1462 / 351
Регистрация: 24.08.2014
Сообщений: 5,175
Записей в блоге: 1
Завершенные тесты: 2
30.12.2016, 16:48 #3
Возможно, что что-то такое имеется ввиду.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
 
struct A
{
    A() : n(123) {}
    int n;
};
 
std::ostream& operator<<(std::ostream& strm, const A& a)
{
    strm << a.n;
    return strm;
}
 
int main()
{
    std::cout << "Hello, world!\n" << A() << "\n";
}
1
antiscaliger
0 / 0 / 0
Регистрация: 30.12.2016
Сообщений: 6
30.12.2016, 17:20  [ТС] #4
Какая ошибка в вызове конструктор?:

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;
 
enum class W {A, B, C}; 
class KL {
W a; int b; int c;
public:
KL(): a(W::B), b(0), c(5) {}
};
 
ostream &operator<<(ostream &outs, KL &kk)
{ outs <<"ok";
  return outs; }
 
int main()
{
cout << KL {W::A, 5, 10};
return 0;
}
0
GbaLog-
Любитель чаепитий
3122 / 1462 / 351
Регистрация: 24.08.2014
Сообщений: 5,175
Записей в блоге: 1
Завершенные тесты: 2
30.12.2016, 17:27 #5
Цитата Сообщение от antiscaliger Посмотреть сообщение
Какая ошибка в вызове конструктор?
В operator<< надо передавать константную ссылку на объект, только тогда возможна передача временного объекта. Есть, конечно, ещё rvalue-ссылки, но вам, думаю, ещё рано про них знать. И да, вы в конструтор передаёте параметры в то время, как у вас определен только конструктор без параметров.
1
antiscaliger
0 / 0 / 0
Регистрация: 30.12.2016
Сообщений: 6
30.12.2016, 17:49  [ТС] #6
Спасибо, но теперь я не могу вывести в поток значение b:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
 
enum class W {A, B, C}; 
 
class KL {
W a; int b; int c;
public:
KL(): a(W::B), b(0), c(5) {}
KL(W ww, int aa, int bb) {}
int getb() {return b;}
};
 
ostream &operator<<(ostream &outs, const KL &kk)
{ outs <<kk.getb();
  return outs; }
 
int main()
{
cout << KL {W::A, 5, 10};
return 0;
}
0
nd2
2820 / 2390 / 851
Регистрация: 29.01.2016
Сообщений: 8,004
30.12.2016, 17:52 #7
Цитата Сообщение от antiscaliger Посмотреть сообщение
но теперь я не могу вывести в поток значение b:
Ты, в этом конструкторе, b инициализируешь?
Цитата Сообщение от antiscaliger Посмотреть сообщение
C++
1
KL(W ww, int aa, int bb) {}
0
GbaLog-
Любитель чаепитий
3122 / 1462 / 351
Регистрация: 24.08.2014
Сообщений: 5,175
Записей в блоге: 1
Завершенные тесты: 2
30.12.2016, 17:53 #8
Цитата Сообщение от antiscaliger Посмотреть сообщение
не могу вывести в поток значение b
Перепишите так.
C++
1
KL(W ww, int aa, int bb) : a(ww), b(aa), c(bb) {}
1
antiscaliger
0 / 0 / 0
Регистрация: 30.12.2016
Сообщений: 6
30.12.2016, 18:04  [ТС] #9
Цитата Сообщение от GbaLog- Посмотреть сообщение
Перепишите так.
C++
1
KL(W ww, int aa, int bb) : a(ww), b(aa), c(bb) {}
Добавил. Все равно программа не компилируется:

main.cpp:15:18: error: passing 'const KL' as 'this' argument discards qualifiers [-fpermissive]
0
GbaLog-
Любитель чаепитий
3122 / 1462 / 351
Регистрация: 24.08.2014
Сообщений: 5,175
Записей в блоге: 1
Завершенные тесты: 2
30.12.2016, 18:19 #10
Цитата Сообщение от antiscaliger Посмотреть сообщение
Все равно программа не компилируется
Заменить:
C++
1
int getb() {return b;}
На:
C++
1
int getb() const {return b;}
1
antiscaliger
0 / 0 / 0
Регистрация: 30.12.2016
Сообщений: 6
30.12.2016, 18:22  [ТС] #11
Передаю значение b в конструктор.
Ошибка в перегруженном операторе<<.

Добавлено через 1 минуту
Благодарю!
0
GbaLog-
Любитель чаепитий
3122 / 1462 / 351
Регистрация: 24.08.2014
Сообщений: 5,175
Записей в блоге: 1
Завершенные тесты: 2
30.12.2016, 18:22 #12
Цитата Сообщение от antiscaliger Посмотреть сообщение
Передаю значение b в конструктор.
Что за b?
Код покажите!
0
antiscaliger
0 / 0 / 0
Регистрация: 30.12.2016
Сообщений: 6
30.12.2016, 18:24  [ТС] #13
Последний Ваш совет помог, благодарю!
0
30.12.2016, 18:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.12.2016, 18:24
Привет! Вот еще темы с ответами:

Двумерный массив в качестве параметра функции - C++
почему не удаётся передать в качестве параметра двумерный массив? #include &lt;iostream.h&gt; int sum(const int** mas, const int...

Передача массива в функцию в качестве параметра - C++
Всем привет! Файл с реализацией: int Init_can::Send(int* msgdata) { //Send canmsg_t tx; ULONG ulWritten; ...

Функции, передача массива в качестве параметра - C++
Приветствую) Собственно, есть простенькое задание с двумерными массивами, оно выполнено: #include &lt;iostream.h&gt; #include &lt;conio.h&gt; ...

Функция, принимающая в качестве параметра функцию - C++
Навести пример функции, которая в качестве параметра принимает функцию


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

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

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