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

Перегрузка cout.operator<< - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ по поводу указателей. Как правильно задавать массив указателей и его удалять? http://www.cyberforum.ru/cpp-beginners/thread448356.html
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?; как массив обнулить не ясно дальше. не понятно как обнулять массив указателей после использования. я делал так: for (short i=0; i<4; i++) { p_MassPoint=NULL; } - не оч красиво. Спасибо за помощь!
C++ Определить тип треугольника. Задан треугольник с углами a, b и g. Определить тип треугольника — остроугольный, прямоугольный или тупоугольный. http://www.cyberforum.ru/cpp-beginners/thread448346.html
База данных Access, visual studio 2008 и C C++
Всем привет! Нужен ваш совет! К примеру у меня имеется БД (Aсcess), которая подключена к проекту... Поясните как мне сделать следующие: 1. Повесить обработчик на нажатие кнопки. 2. Сделать запрос к базе банных и осуществить выборку сотрудников. 3. Отобразить результат запроса - список сотрудников - на форме.
C++ Не могу найти ошибку.
Добрый день всем! Опять у меня проблемы с моими "любимыми" шаблонами. Есть две шаблонные функции печатающие содержимое списка. Первая для любого типа, вторая для char. В ней возникают такие ошибки: 15/15-06/List.h||In member function ‘void List<T>::printList() const ’:| 15/15-06/List.h|97|error: invalid use of incomplete type ‘struct ListNode<char>’| 15/15-06/List.h|5|error: declaration...
C++ Калькулятор комплексных чисел. Помогите плз найти ошибки http://www.cyberforum.ru/cpp-beginners/thread448333.html
Написала програмку для работы с комплексными числами, с С++ знакома поверхностно и прога эта не работает :gsad: подскажите где я ошиблась, буду признательна)) Добавлено через 16 секунд # include <iostream> # include <math.h> using namespace std; struct kompl { float x,y;}; kompl summ (kompl a, kompl b)
C++ Работа с битовыми операциями Реализовать функции шифрования и дешифрования строк. Принцип шифрования: на четыре бита слева каждого символа нало-жить 4-ёх битную маску (операция XOR), затем первый и третий би-ты слева поменять местами. После шифрования напечатать коды символов зашифрованной строки и полученную строку. Дешифровать результат и убедиться, что строка стала равна исходной. подробнее

Показать сообщение отдельно
Konstantin_D
 Аватар для Konstantin_D
14 / 14 / 2
Регистрация: 21.07.2011
Сообщений: 89
18.02.2012, 15:33     Перегрузка cout.operator<<
Не компилируется программа.
Проблема в перегрузке operator<< класса ostream. Как его правильно определить в виде шаблона?
Правильно ли делать класс исключения вложенным в шаболонный класс контейнера?
Есть ли возможность написать обработчик для всех специализаций шаблона? (catch(Stack<T>::Bad_index){} )
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
#include <iostream>
#include <cstdlib>
#include <exception>
using namespace std;
 
template <typename T>
class Stack
{
public:
    class Bad_index: public exception
    {
    public:
        Bad_index(const char* pch): exception(pch) {}
    };
private:
    enum {MAX = 10};
    const int SIZE;
    T* p;
    int top;
    Stack& operator==(const Stack& s) {return *this;}
public:
    explicit Stack(int sz = MAX): SIZE(sz), top(0), p(new T[SIZE]) {}
    Stack(const Stack& s);
    ~Stack() {delete [] p;}
    bool isfull(){return top==SIZE;}
    bool isempty(){return top==0;}
    T& pop();
    void push(const T& t);
    friend ostream& operator<<(ostream& os, Stack<T>& s);
};
template <typename T>
Stack<T>::Stack(const Stack& s): SIZE(s.SIZE), top(s.top), p(new T[SIZE])
{
    for (register int i=0; i<top; ++i)
        p[i] = s.p[i];
}
template <typename T>
T& Stack<T>::pop()
{
    if (isempty())
        throw Bad_index("Exception. Stack is empty.");
    return p[--top];    
}
template <typename T>
void Stack<T>::push(const T& t)
{
    if (isfull())
        throw Bad_index("Exception. Stack is full.");
    p[top++] = t;
}
template <typename T>
ostream& operator<<(ostream& os, Stack<T>& s)
{
    if (s.isempty())
        cout << "Stack is empty.";
    else
        for (register int i=0; i<s.top; ++i)
            os << s.p[i] << " ";
    return os;
}
 
int main()
try{
    const int MAX = 7;
    Stack<int> s1(MAX);
    cout << s1 << endl;
    for (register int i=0; !s1.isfull(); ++i)
        s1.push(i);
    cout << s1 << endl;
//  s1.push(666);
    while ( !s1.isempty() )
        cout << "Pop val = " << s1.pop() << "; " << s1 << endl;
}
catch(Stack<int>::Bad_index& ex)
{
    cout << ex.what() << endl;
    exit(1);
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 01:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru