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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 99, средняя оценка - 4.89
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
#1

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

18.03.2011, 09:39. Просмотров 13152. Ответов 11
Метки нет (Все метки)

Собственно есть программка (большинство функций выкинул чтобы не запутывали) по работе с дробными числами
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
# include <iostream>
# include <iomanip>
using namespace std;
 
class RationalNumber
{
friend ostream &operator<<(ostream &output, const RationalNumber &abc);
public:
    // констркутор по умолчанию, проверяет что дробная часть >0
    // +проверяет можно ли сократить дробь
    RationalNumber(int a=1, int b=1)
    {
        nominator=(a>0) ? a:1;
        denominator=(b>0)? b:1;
        for (int i=2;i<=nominator;i++)
         if (denominator%i==0 && nominator%i==0 )
         {
             nominator/=i;
             denominator/=i;
         }
 
    }
 
    // возможность сложения двух объектов класса RationalNumber
    RationalNumber operator+(RationalNumber &right)
    {
        if (denominator==right.denominator) //если знаменатели равны
         return RationalNumber(nominator+right.nominator,denominator);
        int temp; //иначе
        temp=denominator*right.denominator; // определяем новый знаменатель
        return RationalNumber(((temp/denominator*nominator)+(temp/right.denominator*right.nominator))
        ,temp);
    }
 
 
private:
    int nominator; // числитель
    int denominator; // знаменатель
};
 
ostream &operator<<(ostream &output, const RationalNumber &abc)
{
    output<<abc.nominator;
        if (abc.denominator>1) //если знаменатель не =1 (число не целое)
     output<<"/"<<abc.denominator<<endl;
     return output;
}
 
 
int main()
{
    RationalNumber a(17,10);
    RationalNumber b(20,10);
    RationalNumber c;
    cout<<"A: "<<a;
    cout<<"B: "<<b<<endl;
    cout<<(c=a+b); // МОЖНО в любом случае
    cout<<(a+b); // НЕЛЬЗЯ если объект в функции вывода не const или же если не передаёться копия объекта
}
Программа работает, но мне стало интересно почему если в перегрузке оператора вывода написать
C++
1
ostream &operator<<(ostream &output, RationalNumber &abc)
вместо
C++
1
ostream &operator<<(ostream &output, const RationalNumber &abc)
то в main уже будет невозможно вывести в поток (a+b), хотя присвоить c и вывести всё равно можно (c=a+b) ? Ведь я ставлю const только для передаваемого функции объекта и это не влияет же никак на возвращаемый результат.
Также можно делать копию объекта при передаче и тогда программа тоже будет компилироваться
C++
1
ostream &operator<<(ostream &output, RationalNumber abc)
Но мне всё же интересен первый случай, когда мы программе передаём сам объект без const и почему именно так тогда нельзя выводить в поток (a+b) например.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2011, 09:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перегрузка оператора вывода в поток (C++):

Error: Перегрузка оператора вывода в поток, виртуальные методы - C++
Ребят помогите плиз понять в чем дело. Почему возникает ошибка? В соответствии с моими ожиданиями объекты потомки класса transport...

Вызов прегруженного оператора вывода в поток из аналогичного оператора - C++
Программирую в c9.io с g++ получается тоже самое. Элементами стека(pointList) являются стеки(list) для которых уже определен оператор...

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

Перегрузка оператора запись в поток - C++
Здравствуйте! Подскажите, пожалуйста, возможно ли так реализовать: #include &lt;fstream&gt; class ClassA { public: bool...

Перегрузка оператора запись в поток множества данных - C++
Здравствуйте! Я использую такой код: template&lt;typename T&gt; void operator &gt;&gt; (const T&amp; str) { m_fout &lt;&lt; str &lt;&lt; std::endl; } ...

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
bigredcat
365 / 312 / 3
Регистрация: 24.02.2011
Сообщений: 1,512
Записей в блоге: 1
18.03.2011, 10:16 #2
А у вас какой компилятор?
VC2003, 2005, 2008 нормально все варианты переваривает и не ругается. Рузультаты выполнения тоже одинаковые
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 321
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
18.03.2011, 11:19 #3
Gepar, А нефиг в оператор вывода, который никаким раком не должен менять объект, передавать неконстантную ссылку на объект.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
18.03.2011, 13:14  [ТС] #4
ForEveR, так а я и не спросил как надо, я спросил почему так.
bigredcat, хммм, сейчас попробую в vs.

Добавлено через 1 час 7 минут
Как бы его ещё откомпилировать в vs2010 чтобы этого не было:
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
1>Построение начато 18.03.2011 12:02:40.
1>InitializeBuildStatus:
1>  Обращение к "Debug\New2.unsuccessfulbuild".
1>ClCompile:
1>  New2.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(15): error C2143: синтаксическая ошибка: отсутствие ";" перед "'template<'"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(15): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(18): error C2143: синтаксическая ошибка: отсутствие "," перед "<"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(860): см. ссылку на создание экземпляров класса шаблон при компиляции "basic_istream<_Elem,_Traits>"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(22): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(22): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(22): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(23): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(23): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(23): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(24): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(24): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(24): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(25): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(25): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(25): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(26): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(26): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(26): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(29): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "basic_istream"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(29): error C2071: basic_istream<_Elem,_Traits>::__CLR_OR_THIS_CALL: недопустимый класс хранения
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(29): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(29): error C2061: синтаксическая ошибка: идентификатор "_Mysb"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(37): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "basic_istream"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(37): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(37): error C2473: _Uninitialized: выглядит как определение функции, но без списка параметров.
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(39): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(39): error C2059: синтаксическая ошибка: this
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(39): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(39): warning C4183: _Addstd: отсутствие возвращаемого типа; предполагается функция-член, возвращающая "int"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(42): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "__CLR_OR_THIS_CALL"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(923): error C2143: синтаксическая ошибка: отсутствие "," перед "<"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(965): см. ссылку на создание экземпляров класса шаблон при компиляции "basic_iostream<_Elem,_Traits>"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(928): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(928): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(928): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(929): error C2059: синтаксическая ошибка: <
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(929): error C2238: непредвиденные лексемы перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "basic_iostream"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C2071: basic_iostream<_Elem,_Traits>::__CLR_OR_THIS_CALL: недопустимый класс хранения
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C2143: синтаксическая ошибка: отсутствие ")" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C2143: синтаксическая ошибка: отсутствие ";" перед "<"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(936): error C2334: непредвиденные лексемы перед ":"; пропуск вероятного тела функции
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(942): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "basic_iostream"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(942): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(950): error C2143: синтаксическая ошибка: отсутствие ";" перед "="
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(951): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(956): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "swap"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(956): error C2182: __CLR_OR_THIS_CALL: недопустимое использование типа "void"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(956): error C2040: basic_iostream<_Elem,_Traits>::__CLR_OR_THIS_CALL: "int" отличается по уровням косвенного обращения от "basic_iostream<_Elem,_Traits> &"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(957): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(960): warning C4183: swap: отсутствие возвращаемого типа; предполагается функция-член, возвращающая "int"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(962): error C2143: синтаксическая ошибка: отсутствие ";" перед "~"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(962): error C2433: basic_iostream<_Elem,_Traits>::__CLR_OR_THIS_CALL: "virtual" не разрешается для объявлений данных
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(962): error C4430: отсутствует спецификатор типа - предполагается int. Примечание. C++ не поддерживает int по умолчанию
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1137): error C2146: синтаксическая ошибка: отсутствие ";" перед идентификатором "ws"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1137): error C2433: __CLRCALL_OR_CDECL: "inline" не разрешается для объявлений данных
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1137): error C2530: __CLRCALL_OR_CDECL: ссылки должны быть инициализированы
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1137): error C2065: _Elem: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1137): error C2065: _Traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1170): error C2065: char_traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1170): error C2062: тип "char" не требуется
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1171): error C2065: char_traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1171): error C2062: тип "char" не требуется
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1171): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1172): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1177): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1178): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1178): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1179): error C2065: _Elem: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1179): error C2065: _Traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1179): error C2039: sentry: не является членом "basic_istream"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(18): см. объявление "basic_istream"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1182): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1184): error C2065: ctype: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1184): error C2065: _Elem: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1184): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1187): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1187): error C2143: синтаксическая ошибка: отсутствие ")" перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1188): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1189): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1189): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1189): error C2065: _Meta: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1190): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1191): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1193): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1194): error C2039: space: не является членом "`global namespace'"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1195): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1195): error C2065: _Meta: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1195): error C3861: to_char_type: идентификатор не найден
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1195): error C2143: синтаксическая ошибка: отсутствие "," перед ")"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1198): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1201): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1203): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1205): error C2065: char_traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1205): error C2062: тип "wchar_t" не требуется
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1206): error C2065: char_traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1206): error C2062: тип "wchar_t" не требуется
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1206): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1207): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1212): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1213): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1213): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1214): error C2065: _Elem: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1214): error C2065: _Traits: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1214): error C2039: sentry: не является членом "basic_istream"
1>          c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(18): см. объявление "basic_istream"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1217): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1219): error C2065: ctype: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1219): error C2065: _Elem: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1219): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1222): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1222): error C2143: синтаксическая ошибка: отсутствие ")" перед ";"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1223): error C2059: синтаксическая ошибка: )
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1224): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1224): error C2653: _Traits: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1224): error C2065: _Meta: необъявленный идентификатор
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1225): error C2143: синтаксическая ошибка: отсутствие ";" перед "{"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1226): error C2653: ios_base: не является именем класса или пространства имен
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1228): error C2143: синтаксическая ошибка: отсутствие ";" перед "}"
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\istream(1228): fatal error C1003: число ошибок превышает 100; остановка компиляции
1>
1>СБОЙ построения.
1>
1>Затраченное время: 00:00:01.38
========== Построение: успешно: 0, с ошибками: 1, без изменений: 0, пропущено: 0 ==========
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.03.2011, 16:17 #5
Хм. Ему не нравится istream... Может, побилось там что-нибудь?

Добавлено через 2 минуты
Можно попробовать студию перезапустить.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
18.03.2011, 17:54  [ТС] #6
Цитата Сообщение от silent_1991 Посмотреть сообщение
Можно попробовать студию перезапустить.
Ты и правда думаешь что я пк вижу впервые?

Цитата Сообщение от silent_1991 Посмотреть сообщение
Хм. Ему не нравится istream... Может, побилось там что-нибудь?
Это я тоже заметил по той ошибке что эта vs мне выдала.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.03.2011, 18:03 #7
Gepar, ну тогда переставьте студию))) У меня больше вариантов нету, почему вдруг компилятору не нравится код, который раньше работал, был написан не вами и вы его вряд-ли меняли...
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
18.03.2011, 18:20  [ТС] #8
silent_1991, код то написан мной, но не в vs.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.03.2011, 18:24 #9
Gepar, а, ну ваш код у меня прекрасно работает в обоих вариантах. Это я говорил об ошибках, которые вам студия выдала. Кстати, код как раз в 2010-й студии прекрасно заработал.
А всё-таки, вы каким компилятором пользуетесь?
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
18.03.2011, 18:39  [ТС] #10
silent_1991,minigw (порт GCC с линукса).
А вообще я разобрался почему код без const у меня не компилировался - в этом помогла википедия:
параметры ссылки, не помеченные const, могут только быть адресуемыми значениями:
вот только ms наверное не так строго придерживается стандарта c++.
А вот что с vs2010 моей я не знаю, попробую поставить английскую версию, всё равно в русской я не увидел что хотел, а даже наоборот перевод поначалу напугал.
silent_1991
Эксперт С++
4963 / 3039 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
18.03.2011, 18:50 #11
Да, действительно, Code::Blocks с дефолтным MinGW не захотел компилировать. Ну, с другой стороны, прислушайтесь к словам ForEveR, принцип наименьших привилегий не зря существует. Всё, что можно, нужно делать const.
Gepar
1175 / 531 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
18.03.2011, 22:36  [ТС] #12
silent_1991, так дело не в этом же, мне изначально стало интересно почему нельзя было без const скомпилировать. Одно же дело "хороший тон" , а другое синтаксическая ошибка, ну да вики в принципе объяснила что это строго по стандарту так идёт так что тогда понятно что это не просто тараканы тех кто портировал GCC под windows.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2011, 22:36
Привет! Вот еще темы с ответами:

Перегрузка оператора вывода - C++
Пытаюсь написать программку, но возникла ошибка с выводом информации на экран. Вот мой код: int MAX_ARRAY_SIZE = 2147483647; ...

Перегрузка оператора вывода - C++
Здравствуйте. Не могу понять в чем ошибка. При выводе пишет: warning C4717: operator&lt;&lt;: рекурсия на всех путях выполнения, функция вызовет...

Перегрузка оператора вывода - C++
Здравствуйте. Помогите пожалуйста понять, что нужно передать в качестве параметра при перегрузке оператора вывода? Мне нужно удалить...

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
18.03.2011, 22:36
Ответ Создать тему
Опции темы

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