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

E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'Binary' - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ При запуске скомпилированной программы, выскакивает и тут же пропадает консольное окно http://www.cyberforum.ru/cpp-beginners/thread629759.html
Добрый вечер. Вот такая вот проблема. Появляется консольное окошко и тут же исчезает. Я помню можно было батник создать, в него что-то вписать, и через него всё запустится. Неподскажете, что именно надо вписывать? И можно ещё подсказать, что надо в код вписать, чтобы подобных проблем больше не было? Заранее спасибо.
C++ Удаление нулевой(-ых) строчки и столбца из матрицы Доброго времени суток! Помогите написать программу, которая проверяла бы матрицу на нулевую строчку и столбец, и, если таковые присутствуют, удаляла бы их.Поясню: из матрицы 1 0 4 0 0 0 3 0 5 удалить 2 строчку и 2 столбец. Самое главное это "индекс" (то бишь n-ая строка и n-ый столбец) Я попробовал написать код, но у меня мало чего получилось #include <iostream> #include <math.h> #include... http://www.cyberforum.ru/cpp-beginners/thread629746.html
Оператор xor C++
Всем добрый вечер.Чем отличаются следующие выражения: (a || b) && !(a && b); и (a^b);
C++ Лафоре задача по классам
Задача из книги лафоре по классам №7: нужно написать программу используя классы для ввода и вывода координат, кроме того нужно написать конструктор который будет принимать 3 аргумента и написать функцию main которая будет создавать переменную с помощью трёхаргументного конструктора и будет выводить её значение на экран а затем циклически запрашивает ввод координат и после их выводит. Собственно...
C++ Не удается найти ошибку http://www.cyberforum.ru/cpp-beginners/thread629656.html
Линкер ругается (2001) на не разрешенный внешний символ, гуглил но не втыкнул из-за чего конкретно он выдает эту ошибку.Вот код: //заголовок #ifndef SAVINGSACCOUNT_H #define SAVINGSACCOUNT_H class SavingsAccount{ public: SavingsAccount(int = 0);
C++ Таймеры Здравствуйте, скажите какие есть готовые таймеры? Пользовался поиском, нашел только winapi и простую библиотеку time.h, только почему то используя функцию clock() у меня выводится результат = 0 :scratch:. . Rdtsc - выводит точный результат совершенных тактов? #include <time.h> #include <intrin.h> #pragma intrinsic(__rdtsc) unsigned __int64 rdtsc(){ return __rdtsc(); } подробнее

Показать сообщение отдельно
Mr. Pyatachok
 Аватар для Mr. Pyatachok
8 / 8 / 0
Регистрация: 30.06.2011
Сообщений: 250
27.07.2012, 22:47  [ТС]     E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'Binary'
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
#include <iostream.h>
#include <string>
#include <windows.h>
 
class Binary
{
        public:
    Binary(const Binary& b = "");
    Binary& operator=(const Binary& b);
    Binary(const char*      b);
    Binary& operator +=(const Binary& b);
    Binary& operator -=(const Binary& b);
    friend ostream& operator <<(std::ostream& s, Binary& b)
    { return std::cout << b.data;}
    friend std::istream& operator >>(std::istream& s, Binary& b)
    { return std::cin  >> b.data;}
        private:
    std::string data;
};
 
Binary operator +(const Binary& a, const Binary& b);
Binary operator -(const Binary& a, const Binary& b);
 
Binary::Binary(const char *b)
{
        data = b;
}
 
Binary::Binary(const Binary &b)
{
        *this = b;
}
Binary& Binary::operator =(const Binary& b)
{
        data = b.data;
        return *this;
}
 
Binary& Binary::operator +=(const Binary& b)
{
        Binary t(b);                                    // Модифицировать не имеем право...
        // Определяем наиболее длинную строку и ту,
        // которая короче, дополняем справа нулями.
        std::string tmp(labs(data.length()-t.data.length()),'0');
        if(data.length() > t.data.length())
                t.data = tmp + t.data;
        else
                data = tmp + data;
 
        // Создаём два обратных итератора, т.к. двигаться будем
        // в обратном направлении. т.е. с конца строки в начало.
        std::string::reverse_iterator riData = data.rbegin();
        std::string::reverse_iterator riBData = t.data.rbegin();
        int c = 0;                                              // Флаг переноса.
        while(riData != data.rend())    // Двигаемся по строке с конца в начало.
        {
                int i1 = *riData - 0x30;        // Преобразовываем символы в числа.
                int i2 = *riBData - 0x30;       // !!! АКТУАЛЬНО ТОЛЬКО ДЛЯ ASCII !!!
                int res = i1 + i2 + c;          // Вот оно сложение.
                c  = (res & 2) >> 1;            // Корректируем флаг переноса
                res &= 1;                                       // После этого корректируем результат.
                *riData = res + 0x30;           // Записываем обратно, преобразовав обратно в символ
                riData++; riBData++;            // Двигаемся дальше...
        }
        if(c)                                                   // Если переполнение
                data = '1' + data;
        return *this;
}
 
Binary& Binary::operator -=(const Binary& b)
{
        Binary t(b);                                    // Модифицировать не имеем право...
        // Определяем наиболее длинную строку и ту,
        // которая короче, дополняем справа нулями.
        std::string tmp(labs(data.length()-t.data.length()),'0');
        if(data.length() > t.data.length())
                t.data = tmp + t.data;
        else
                data = tmp + data;
 
        // Создаём два обратных итератора, т.к. двигаться будем
        // в обратном направлении. т.е. с конца строки в начало.
        std::string::reverse_iterator riData = data.rbegin();
        std::string::reverse_iterator riBData = t.data.rbegin();
        int c = 0;                                              // Флаг переноса.
        while(riData != data.rend())    // Двигаемся по строке с конца в начало.
        {
                int i1 = *riData - 0x30;        // Преобразовываем символы в числа.
                int i2 = *riBData - 0x30;       // !!! АКТУАЛЬНО ТОЛЬКО ДЛЯ ASCII !!!
                int res = i1 - i2 - c;          // Вот оно вычитание.
                c  = (res & 2) >> 1;            // Корректируем флаг переноса
                res &= 1;                                       // После этого корректируем результат.
                *riData = res + 0x30;           // Записываем обратно, преобразовав обратно в символ
                riData++; riBData++;            // Двигаемся дальше...
        }
        if(c)                                                   // Если переполнение
                data = '1' + data;
        return *this;
}
 
// ----Утилиты класса----
// После опрелеленных функций +=,  -= и =
// функции сложения и вычитания определяются тривиально:
Binary operator +(const Binary& a, const Binary& b)
{
        Binary t = a;
        return t += b;
}
 
Binary operator -(const Binary& a, const Binary& b)
{
        Binary t = a;
        return t -= b;
}
 
 
int main()
{
    std::string mes = "Введите через пробел 3 двоичных чила: ";
    char res1[100],res2[100],res3[100];
    //CharToOem(mes.c_str(), res);
    //std::cout << res;
 
    Binary a(res1), b(res2), c(res3);
    std::cin >> res1 >> res2 >> res3;
    std::cout   << "a = " << a << std::endl
                << "b = " << b << std::endl
                << "c = " << c << std::endl;
 
    std::cout   << "a + b + c = " << a + b + c << std::endl
                << "a + b - c = " << a + b - c << std::endl
                << "a - b + c = " << a - b + c << std::endl
                << "a - b - c = " << a - b - c << std::endl;
    return 0;
}
[C++ Error] Unit1.cpp(130): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'Binary'
 
Текущее время: 04:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru