Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 03.06.2011
Сообщений: 3

Перегрузка оператора вывода

03.06.2011, 15:23. Показов 1550. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь написать программку, но возникла ошибка с выводом информации на экран.
Вот мой код:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
int MAX_ARRAY_SIZE = 2147483647;
 
template <typename Type1, 
          typename Type2,
          typename Type3>
class SQL {
private:
    int iterator;
    const int max_arr;
 
    vector<Type1> info1;
    vector<Type2> info2;
    vector<Type3> info3;
 
public:
    SQL() : iterator(0), max_arr(MAX_ARRAY_SIZE) {}
    SQL(int arr) : iterator(0), max_arr(arr) {}
    void push_back(Type1 info1_ = NULL, Type2 info2_ = NULL, Type3 info3_ = NULL){
        if(iterator) ++iterator;
        if(iterator > max_arr) {
            string err = "Out of range!";
            throw err;
        }
        info1.push_back(info1_);
        info2.push_back(info2_);
        info3.push_back(info3_);
    }
    SQL operator()(const int &i = 0, const int &section = 0){
        if(section < 0 || section > 2) {
            string err = "Wrong choosing the section of array!";
            throw err;
        }
        if(i < 0 || i > max_arr) {
            string err = "Error in choosing a cell in an array!";
            throw err;
        }
        switch (section){
            case 0:
                return info1[i];
                break;
            case 1:
                return info2[i];
                break;
            case 2:
                return info3[i];
                break;
        }
    }
    
};
 
/////////////////////////////////////////////
////////////////////////////////////////////
////////////////////////////////////////////
 
namespace _ERROR_ {
    class _ERROR {
    private:
        const string error;
        const string close;
    public:
        _ERROR(const string &err): error(err), close("Press any key to break the programm!") {}
        void show_error() { 
            cout << error << endl;
            cout << close << endl;
        }
    };
}
int main(int argc, char *argv[])
{
    wcout.imbue(locale(".866")); //Русская кодировка
    system("COLOR 0A");
    srand(time(NULL));
    for(;;){
        try{
            SQL<string, int, double> Arr;
            Arr.push_back("Hello", 23, 34.53);
            cout << Arr(0, 1);
        } catch(const string error){
            _ERROR_::_ERROR err(error);
            err.show_error();
            getch();
            return 1;
        }
    }
    getch();
    return 0;
}
Не работает команда
C++
1
cout << Arr(0, 1);
Error 2 error C2679: binary '<<' : no operator found which takes a right-hand operand of type 'SQL<Type1,Type2,Type3>' (or there is no acceptable conversion)

Я так понимаю, тут необходимо перегрузить оператор вывода, но как я не бился, заставить работать этот код, я не смог.
Помогите пожалуйста, буду благодарен за любые подсказки.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
03.06.2011, 15:23
Ответы с готовыми решениями:

Перегрузка оператора вывода в С++ (для вывода данных вектора)
Как правильно перегрузить оператор вывода для вектора чтобы он выводил все данные из вектора ? Для этого класса есил можно помогите. ...

Перегрузка оператора вывода
Я сотворил одну программку, при выводе первый элемент массива не правильный. Уже перегрузил оператор вывода, но не понимаю что не так....

Перегрузка оператора вывода
Здравствуйте. Я пишу учебную программу реализующая арифметику обыкновенных дробей. И в данный момент перезагружаю оператор вывода. ...

1
Эксперт С++
5058 / 3118 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
03.06.2011, 21:01
Вот так надо перегружать глобальные операторы (например, <<) для шаблонных классов:

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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include <iostream>
#include <complex>
 
template< typename T >
class Foo;
 
template< typename T >
std::ostream &operator<<(std::ostream &, const Foo< T > &);
 
template< typename T >
class Foo
{
public:
    Foo(const T &foo):
    m_foo(foo)
    {
    }
 
    friend std::ostream &operator<<< >(std::ostream &, const Foo< T > &);
 
private:
    T m_foo;
};
 
template< typename T >
std::ostream &operator<<(std::ostream &left, const Foo< T > &right)
{
    return left << right.m_foo;
}
 
int main()
{
    Foo< int > i_bar(3);
    Foo< double > d_bar(2.718281828459045);
    Foo< std::complex< double > > cmplx_bar(std::complex< double > (2.5, 1.5));
 
    std::cout << i_bar << std::endl
              << d_bar << std::endl
              << cmplx_bar << std::endl;
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.06.2011, 21:01
Помогаю со студенческими работами здесь

Перегрузка оператора вывода
struct SomeStruct { std::ostream&amp; operator&lt;&lt; (std::ostream&amp; s/*, SomeStruct&amp;*/) { return s &lt;&lt; &quot;123&quot;; }; }; int main() {...

Перегрузка оператора вывода
Доброго времени суток. Задача программы: умножение и деление комплексных чисел. Файл number.h #pragma once class number { ...

Перегрузка оператора вывода
Всем привет, может быть глупый вопрос, но по Липманну вообще ничего не понятно, хотя книга для начинающих. Так как я мало знаком с...

Перегрузка оператора вывода
Здравствуйте! Подскажите пожалуйста как можно решить проблему с перегрузкой оператора. В моем коде выдает ошибку: error C2440: '=' :...

Перегрузка оператора вывода
В чем ошибка, пытаюсь вывести Цену а он мне выводит ошибку в сроке 23: Ошибка C3867 &quot;Cat:: price&quot;: нестандартный синтаксис;...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru