12 / 12 / 0
Регистрация: 31.08.2011
Сообщений: 458
1

Ошибка компилятора "In file included from fig11_08.cpp"

14.07.2014, 06:31. Показов 6582. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Ошибка выскакивает в файле fig11_08.cpp на 8 строке. Уже второй раз сталкиваюсь с этим и понял, что так дело больше не пойдет, надо разобраться. Помогите понять, что он хочет.
Вложения
Тип файла: rar 11_8.rar (3.1 Кб, 9 просмотров)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
14.07.2014, 06:31
Ответы с готовыми решениями:

Main.cpp In file included from main.cpp
//class.cpp #include "class.h" Ticket::Ticket() { prise = 0; marshrut = "none"; time =...

Непонятная ошибка компилятора Dev-Cpp
#include <cstdlib> #include <iostream> using namespace std; void s(int a) { ...

C:\Documents and Settings\root\untitled\main.cpp:1: ошибка: C1083: No such file or directory
Всем привет! Решил подключить opencv к QT Creatore но возникла такая ошибка: C:\Documents and...

Библиотека (.h + .cpp) в папку include компилятора
Здравствуйте! Написал библиотеку с вынесенным в разные файлы интерфейсом и реализацией (lib.h и...

11
12 / 12 / 0
Регистрация: 31.08.2011
Сообщений: 458
14.07.2014, 07:22  [ТС] 2
в файлах кое где остались синтакс ошибки. Это может быть причиной? Верней не синтакс, а орфографические, не знаю как их назвать в среде программирования. То есть кавычки где то не стоят, или вместо буквы цифра. Так из пдф копирование происходит через буфер.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
14.07.2014, 08:08 3
Цитата Сообщение от Тимур05 Посмотреть сообщение
в файлах кое где остались синтакс ошибки. Это может быть причиной?
Может

Добавлено через 37 минут
Синтаксис поправил, логику не смотрел

Кликните здесь для просмотра всего текста

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
// Рис. 11.6: Array.h 
// Класс массива для хранения целых чисел. 
#ifndef ARRAY_H 
#define ARRAY_H 
 
#include <iostream> 
 
using std::ostream; 
using std::istream; 
 
class Array
{ 
   friend ostream& operator<<( ostream &, const Array & ); 
   friend istream& operator>>( istream &, Array & ); 
   public: 
   Array( int = 10 ); // конструктор по умолчанию 
   Array( const Array & ); // конструктор копии 
   ~Array(); // деструктор 
   int getSize() const; // возвратить размер 
   
   const Array &operator=( const Array & ); // операция присваивания 
   bool operator==( const Array & ) const; // операция равенства 
   
   // операция неравенства; результат противоположен операции == 
   bool operator!=( const Array right ) const 
   { 
     return ! ( *this == right ); // вызывает Array::operator== 
   } // конец функции operator!= 
   
   // индексация для неконстантных объектов возвращает lvalue 
   int &operator[]( int ); 
   
   // индексация для константных объектов возвращает rvalue 
   int operator[]( int ) const; 
   private: 
   int size; // размер массива, заданного указателем 
   int *ptr; // указатель на первый элемент массива 
}; // конец класса Array 
#endif
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
136
137
138
139
140
141
142
143
144
// Рис 11.7: Array.срр 
// Определения элемент-функций для класса Array 
#include <iostream> 
using std::cerr; 
using std::cout; 
using std::cin; 
using std::endl; 
 
#include <iomanip> 
using std::setw; 
 
#include <cstdlib> // прототип функции exit 
using std::exit; 
 
#include "Array.h" // определение класса Array 
 
// конструктор Array по умолчанию (размер по умолчанию 10) 
Array::Array( int arraySize ) 
{ 
   size = ( arraySize > 0 ? arraySize : 10 ) ; // проверить arraySize 
   ptr = new int[ size ]; // выделить пространство для массива 
   
   for ( int i = 0; i < size; i++ ) 
       ptr[ i ] =0; // установить элемент массива-указателя 
} // конец конструктора Array по умолчанию 
 
// конструктор копии для класса Array; 
// для предотвращения бесконечной рекурсии должен возвращать ссылку 
Array::Array( const Array &arrayToCopy ) 
: size( arrayToCopy.size ) 
{ 
   ptr = new int[ size ] ; // выделить пространство для массива 
   
   for ( int i = 0; i < size; i++ ) 
       ptr[ i ] = arrayToCopy.ptr[ i ]; // копировать в объект 
} // конец конструктора копии Array 
 
// деструктор для класса Array 
Array::~Array() 
{ 
  delete [] ptr; // освободить пространство массива 
} // конец деструктора 
 
// возвратить число элементов Array 
int Array::getSize() const 
{ 
  return size; // число элементов в Array 
} // конец функции getSize 
 
// перегруженная операция присваивания; 
// возвращаемая константа предотвращает: ( al = а2 ) = аЗ 
const Array & Array::operator=( const Array &right ) 
{ 
   if ( &right != this ) // избегать самоприсваивания 
   { 
      // для массивов разного размера освободить исходный массив 
      //в левой части, затем выделить новый массив для левой части 
      if ( size != right.size ) 
      { 
         delete [] ptr; // освободить пространство 
         size = right.size; // переустановить размер этого объекта 
         ptr = new int[ size ]; // создать пространство для копии 
      } // конец внутреннего if 
      
      for ( int i = 0; i < size; i++ ) 
      ptr[ i ] = right.ptr[ i ]; // копировать массив в объект 
   } // конец внешнего if 
   
   return *this; // позволяет писать, например, х = у = z 
} // конец функции operator= 
 
// определить, равны ли два массива, если равны, 
// возвратить true, в противном случае возвратить false 
bool Array::operator==( const Array &right ) const 
{ 
   if ( size != right.size ) 
   return false; // массивы с различным числом элементов 
   
   for ( int i = 0; i < size; i++ ) 
      if ( ptr[ i ] != right.ptr[ i ] ) 
         return false; // содержимое массивов различно 
   
   return true; // массивы равны 
} // конец функции operator= 
 
// перегруженная операция индексации для неконстантных массивов; 
// возврат ссылки создает модифицируемое lvalue 
int &Array::operator[]( int subscript ) 
{ 
   // проверить индекс на выход за пределы массива 
   if ( subscript < 0 || subscript >= size ) 
   { 
      cerr << "\nError: Subscript " << subscript 
      << " out of range" << endl; 
      exit( 1 ); // завершить программу; индекс вне диапазона 
   } // конец if 
   
   return ptr[ subscript ]; // возврат ссылки 
} // конец функции operator[] 
 
// перегруженная операция индексации для константных массивов; 
// возврат константной ссылки создает rvalue 
int Array::operator[]( int subscript ) const 
{ 
   // проверить индекс на выход за пределы массива 
   if ( subscript < 0 || subscript >= size ) 
   { 
      cerr << "\nError: Subscript " << subscript 
      << " out of range" << endl; 
      exit( 1 ); // завершить программу; индекс вне диапазона 
   } // конец if 
   
   return ptr[ subscript ]; // возвращает копию элемента 
} // конец функции operator[] 
 
// перегруженная операция ввода для класса Array; 
// вводит значения для всего массива 
istream &operator>>( istream &input, Array &a ) 
{ 
   for ( int i = 0; i < a.size; i++ ) 
       input >> a.ptr[ i ]; 
   
   return input; // enables cin >> x >> y; 
} // конец функции operator>> 
 
// перегруженная операция вывода для класса Array 
ostream &operator<<( ostream &output, const Array &a ) 
{ 
   int i; 
   
   // вывести закрытый массив, адресуемый указателем 
   for ( i = 0; i < a.size; i++ ) 
   { 
      output << setw( 12 ) << a.ptr[ i ]; 
      
      if ( ( i + 1 ) % 4 == 0 ) // no 4 числа в строке вывода 
         output << endl; 
   } // конец for 
   
   if ( i % 4 != 0 ) // закончить последнюю строку вывода 
      output << endl; 
   
   return output; // позволяет писать cout << x << y; 
} // конец функции operator<<
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
// Рис. 11.8: fig11_08.cpp 
// Тестовая программа для класса Array. 
#include <iostream> 
using std::cout; 
using std::cin; 
using std::endl; 
 
#include "Array.h" 
 
int main() 
{ 
   Array integers1( 7 ); // 7-элементный Array 
   Array integers2; // 10-элементный Array по умолчанию 
   
   // напечатать размер и содержимое integers1 
   cout << "Size of Array integersl is " 
   << integers1.getSize() 
   << "\nArray after initialization:\n" << integers1; 
   
   // напечатать размер и содержимое integers2 
   cout << "\nSize of Array integers2 is " 
   << integers2.getSize() 
   << "\nArray after initialization:\n" << integers2; 
   
   // ввести и напечатать integersl и integers2 
   cout << "\nEnter 17 integers:" << endl; 
   cin >> integers1 >> integers2; 
   
   cout << "\nAfter input, the Arrays contain:\n" 
   << "integers1:\n" << integers1 
   << "integers2:\n" << integers2; 
   
   // применить перегруженную операцию неравенства (!=) 
   cout << "\nEvaluating: integersl != integers2" << endl; 
   
   if ( integers1 != integers2 ) 
      cout << "integersl and integers2 are not equal" << endl; 
   
   // создать массив integers3, используя как инициализатор 
   // integersl; напечатать размер и содержимое 
   Array integers3( integers1 ); // вызывает конструктор копии 
   
   cout << "\nSize of Array integers3 is " 
   << integers3.getSize() 
   << "\nArray after initialization:\n" << integers3; 
   
   // применить перегруженную операцию присваивания (=) 
   cout << "\nAssigning integers2 to integersl:" << endl; 
   integers1 = integers2; // заметьте, что целевой массив меньше 
   
   cout << "integersl:\n" << integers1 
   << "integers2:\n" << integers2; 
   
   // применить перегруженную операцию равенства (==) 
   cout << "\nEvaluating: integers1 == integers2" << endl; 
   
   if ( integers1 == integers2 ) 
      cout << "integersl and integers2 are equal" << endl; 
   
   // применить перегруженную операцию индексации, дающую rvalue 
   cout << "\nintegers1[5] is " << integers1[ 5 ]; 
   
   // применить перегруженную операцию индексации, дающую lvalue 
   cout << "\n\nAssigning 1000 to integers1[5]" << endl; 
   integers1[ 5 ] = 1000; 
   cout << "integersl:\n" << integers1; 
   
   // попытка использования индекса вне диапазона 
   cout << "\nAttempt to assign 1000 to integersl[15]" << endl; 
   integers1[ 15 ] = 1000; // ОШИБКА: выход за диапазон 
   return 0; 
} // конец main
1
12 / 12 / 0
Регистрация: 31.08.2011
Сообщений: 458
17.07.2014, 23:46  [ТС] 4
ты крут, мега мозг ). Я то сверяю каждую строчку с книгой и то пропустил где-то, а ты просто сверял со своей логикой и получилось.

Добавлено через 40 минут
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Синтаксис поправил
Как ты это сделал, открой секрет. Сейчас другой проект скопировал, опять та же ошибка. Не поленился прошел каждую строчку отдельно, сверил, все равно ошибка выскакивает. Может какая метода есть у тебя?
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
18.07.2014, 06:10 5
Цитата Сообщение от Тимур05 Посмотреть сообщение
Может какая метода есть у тебя?
Нет, просто я этим на жизнь зарабатываю .
0
12 / 12 / 0
Регистрация: 31.08.2011
Сообщений: 458
18.07.2014, 14:04  [ТС] 6
Есть еще один не большой проект, хочу показать тебе, может поможешь, просто указать где ошибки, чтоб самому понять, что я пропустил. Здесь я сам каждую строчку проверил по книге, строка в строку, но все равно выскакивает ошибка (название темы). В комментариях если есть ошибки, то их я игнорирую, так как компилятор то же не смотрит на них.
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
// Ðèñ. 11.9: String.h 
// Îïðåäåëåíèå êëàññà String. 
#ifndef STRING_H 
#define STRING_H 
 
#include <iostream> 
using std::ostream; 
using std::istream; 
 
class String 
{ 
   friend îstream &operator<<( ostream &, const String & ) ; 
   friend istream &operator>>( istream &, String & ) ; 
public: 
   String( const char * = "" ); // ê-òîð ïðåîáðàçîâàíèÿ/ïî óìîë÷àíèþ 
   String( const String & ); // êîíñòðóêòîð êîïèè 
   ~String(); // äåñòðóêòîð 
   
   const String &operator=( const String & ); // on. ïðèñâàèâàíèÿ 
   const String &operator+=( const String & ); // on. êîíêàòåíàöèè 
   
   bool operator!() const; // ïóñòà ëè ñòðîêà? 
   bool operator==( const String & ) const; // ïðîâåðèòü si == s2 
   bool operator<( const String & ) const; // ïðîâåðèòü si < s2 
   
   // ïðîâåðèòü si != s2 
   bool operator!=( const String &right ) const 
   { 
     return !( *this == right ); 
   } // êîíåö ôóíêöèè operator!= 
   
   // ïðîâåðèòü si > s2 
   bool operator>( const String &right ) const 
   { 
     return right < *this; 
   } // êîíåö ôóíêöèè operator> 
   
   // ïðîâåðèòü si <= s2 
   bool operator<=( const String &right ) const 
   { 
     return !( right < *this ); 
   } // êîíåö ôóíêöèè operator <= 
   
   // ïðîâåðèòü si >= s2 
   bool operator>=( const String &right ) const 
   { 
     return !( *this < right ); 
   } // êîíåö ôóíêöèè operator>= 
   
   char &operator[]( int ); // îïåðàöèÿ èíäåêñàöèè (lvalue) 
   char operator[]( int ) const; // îïåðàöèÿ èíäåêñàöèè (rvalue) 
   String operator()( int, int = 0 ) const; // âîçâðàòèòü ïîäñòðîêó 
   int getLength() const; // âîçâðàòèòü äëèíó ñòðîêè 
private: 
   int length; // äëèíà ñòðîêè (íå ñ÷èòàÿ çàâåðøàþùèé íóëü) 
   char *sPtr; // óêàçàòåëü íà íà÷àëî ïðåäñòàâëåíèÿ ñòðîêè
   
   void setString( const char * ); // âñïîìîãàòåëüíàÿ ôóíêöèÿ 
}; // êîíåö êëàññà String 
 
#endif
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
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
// Ðèñ. 11.10: String.ñðð 
// Îïðåäåëåíèå ýëåìåíò-ôóíêöèé äëÿ êëàññà String. 
#include <iostream> 
using std::cerr; 
using std::cout; 
using std::endl; 
 
#include <iomanip> 
using std::setw; 
 
#include <cstring> // ïðîòîòèïû strcpy è streat 
using std::strcmp; 
using std::strcpy; 
using std::strcat; 
 
#include <cstdlib> // ïðîòîòèï exit 
using std::exit; 
 
#include "String.h" // îïðåäåëåíèå êëàññà String 
 
// êîíñòðóêòîð ïðåîáðàçîâàíèÿ (è ïî óìîë÷àíèþ) char* â String 
String::String( const char *s ) 
: length( ( s != 0 ) ? strlen( s ) : 0 ) 
{ 
   cout << "Conversion (and default) constructor: " << s << endl; 
   setString( s ); // call utility function 
} // êîíåö êîíñòðóêòîðà ïðåîáðàçîâàíèÿ String 
 
// êîíñòðóêòîð êîïèè 
String::String( const String &copy ) 
: length( copy.length ) 
{ 
   cout << "Copy constructor: " << copy.sPtr << endl; 
   setString( copy.sPtr ); // call utility function 
} // êîíåö êîíñòðóêòîðà êîïèè String 
 
// äåñòðóêòîð 
String::~String() 
{ 
   cout << "Destructor: " << sPtr << endl; 
   delete [] sPtr; // îñâîáîäèòü ñòðîêó, ïðåäñòàâëåííóþ óêàçàòåëåì 
} // êîíåö äåñòðóêòîðà -String 
 
// ïåðåãðóæåííàÿ îïåðàöèÿ =; ïðåäîòâðàùàåò ñàìîïðèñâàèâàíèå 
const String &String::operator=( const String &right ) 
{ 
   cout << "operator= called" << endl; 
   
   if ( &right != this ) // ïðåäîòâðàòèòü ñàìîïðèñâàèâàíèå 
   { 
      delete [] sPtr; // ïðåäîòâðàùàåò óòå÷êó ïàìÿòè 
      length = right.length; // íîâàÿ äëèíà ñòðîêè 
      setString( right.sPtr ); // âûçâàòü âñïîìîãàòåëüíóþ ôóíêöèþ 
   } // êîíåö if 
   else 
        cout << "Attempted assignment of a String to itself" << endl; 
   
   return *this; // ðàçðåøàåò êàñêàäíîå ïðèñâàèâàíèå 
} // êîíåö ôóíêöèè operator= 
 
// ïðèñîåäèíèòü ïðàâûé îïåðàíä ê îáúåêòó è ñîõðàíèòü â îáúåêòå 
const String &String::operator+=( const String &right ) 
{ 
   size_t newLength = length + right.length; // íîâàÿ äëèíà 
   char *tempPtr = new char[ newLength + 1 ]; // âûäåëèòü ïàìÿòü 
   
   strcpy( tempPtr, sPtr ); // êîïèðîâàòü sPtr 
   strcpy( tempPtr + length, right.sPtr ); // êîïèðîâàòü right.sPtr 
   
   delete [] sPtr; // îñâîáîäèòü ñòàðûé ìàññèâ 
   sPtr = tempPtr; // ïðèñâîèòü sPtr íîâûé ìàññèâ 
   length = newLength; // ïðèñâîèòü length íîâóþ äëèíó 
   return *this; // ðàçðåøàåò êàñêàäíûå âûçîâû 
} // êîíåö ôóíêöèè operator+= 
 
// Ïóñòà ëè ñòðîêà? 
bool String::operator!() const 
{ 
  return length == 0; 
} // êîíåö ôóíêöèè operator! 
 
// Ðàâíà ëè äàííàÿ ñòðîêà ïðàâîé ñòðîêå? 
bool String::operator==( const String &right ) const 
{ 
  return strcmp( sPtr, right.sPtr ) == 0; 
} // êîíåö ôóíêöèè operator== 
 
// Ìåíüøå ëè äàííàÿ ñòðîêà ïðàâîé ñòðîêå? 
bool String::operator<( const String &right ) const 
{ 
  return strcmp( sPtr, right.sPtr ) < 0; 
} // êîíåö ôóíêöèè operator< 
 
// âîçâðàòèòü ññûëêó íà ñèìâîë ñòðîêè êàê ìîäèôèöèðóåìîå lvalue 
char &String::operator[] ( int subscript ) 
{ 
   // ïðîâåðèòü íà âûõîä èíäåêñà èç äèàïàçîíà 
   if ( subscript < 0 || subscript >= length ) 
   { 
      cerr << "Error: Subscript " << subscript 
      << " out of range" << endl; 
      exit( 1 ); // çàâåðøèòü ïðîãðàììó 
   } // êîíåö if 
   
   return sPtr[ subscript ]; // ìîäèôèöèðóåìîå lvalue 
} // êîíåö ôóíêöèè operator[] 
 
// âîçâðàòèòü ññûëêó íà ñèìâîë ñòðîêè êàê rvalue 
char String::operator[] ( int subscript ) const 
{ 
   // ïðîâåðèòü íà âûõîä èíäåêñà èç äèàïàçîíà 
   if ( subscript < 0 || subscript >= length ) 
   { 
      cerr << "Error: Subscript " << subscript 
      << " out of range" << endl; 
      exit( 1 ); // çàâåðøèòü ïðîãðàììó 
   } // êîíåö if 
   
   return sPtr[ subscript ]; // âîçâðàùàåò êîïèþ ýëåìåíòà 
} // êîíåö ôóíêöèè operator[] 
 
// âîçâðàòèòü ïîäñòðîêó, íà÷èíàþùóþñÿ ñ index è äëèíîé subLength 
String String::operator()( int index, int subLength ) const 
{ 
   // åñëè èíäåêñ âíå äèàïàçîíà èëè äëèíà ñòðîêè < 0, 
   // âîçâðàòèòü ïóñòîöé îáúåêò String 
   if ( index < 0 || index >= length || subLength < 0 ) 
      return ""; // àâòîìàòè÷åñêè ïðåîáðàçóåòñÿ â îáúåêò String 
   
   // îïðåäåëèòü äëèíó ïîäñòðîêè 
   int len; 
   
   if ( ( subLength == 0 ) || ( index + subLength > length ) ) 
      len = length - index; 
   else 
        len = subLength; 
   
   // âûäåëèòü âðåìåííûé ìàññèâ äëÿ ïîäñòðîêè 
   //è çàâåðøàþùåãî íóëåâîãî ñèìâîëà 
   char *tempPtr = new char[ len + 1 ]; 
   
   // êîïèðîâàòü ñòðîêó â ìàññèâ è çàâåðøèòü ñòðîêó 
   strncpy( tempPtr, &sPtr[ index ], len ); 
   tempPtr[ len ] = '\0'; 
   
   // ñîçäàòü âðåìåííûé îáúåêò String, ñîäåðæàùèé ïîäñòðîêó 
   String tempString( tempPtr ); 
   delete [] tempPtr; // óäàëèòü âðåìåííûé ìàññèâ 
   return tempString; // âîçâðàòèòü êîïèþ âðåìåííîãî îáúåêòà String 
} // êîíåö ôóíêöèè operator() 
 
// âîçâðàòèòü äëèíó ñòðîêè 
int String::getLength() const 
{ 
  return length; 
} // êîíåö ôóíêöèè getLength 
 
// âñïîìîãàòåëüíàÿ ôóíêöèÿ, âûçûâàåìàÿ êîíñòðóêòîðàìè è operator= 
void String::setstring( const char *string2 ) 
{ 
   sPtr = new char[ length +1 ]; // âûäåëèòü ïàìÿòü 
   
   if ( string2 != Î ) // åñëè string2 - íå NULL, êîïèðîâàòü 
      strcpy( sPtr, string2 ); // êîïèðîâàòü ëèòåðàë â îáúåêò 
   else // åñëè string2 - NULL, ñäåëàòü this ïóñòîé ñòðîêîé 
        sPtr[ 0 ] = '\0'; // ïóñòàÿ ñòðîêà 
} // êîíåö ôóíêöèè setString 
 
// ïåðåãðóæåííàÿ îïåðàöèÿ âûâîäà 
ostream &operator<<( îstream &output, const String &s ) 
{ 
   output << s.sPtr; 
   return output; // ðàçðåøàåò êàñêàäèðîâàíèå 
} // êîíåö ôóíêöèè operator<< 
 
// ïåðåãðóæåííàÿ îïåðàöèÿ ââîäà 
istream &operator>>( istream &input, String &s ) 
{ 
   char temp[ 100 ]; // áóôåð äëÿ õðàíåíèÿ ââîäà 
   input >> setw( 100 ) >> temp; 
   s = temp; // èñïîëüçîâàòü îïåðàöèþ ïðèñâàèâàíèÿ êëàññà String 
   return input; // ðàçðåøàåò êàñêàäèðîâàíèå 
} // êîíåö ôóíêöèè operator>>
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
// Ðèñ. 11.11: fig11_11.cpp 
// Òåñòîâàÿ ïðîãðàììà äëÿ êëàññà String. 
#include <iostream> 
using std::cout; 
using std::endl; 
using std::boolalpha; 
 
#include "String.h" 
 
int main() 
{ 
   String s1( "happy" ); 
   String s2( " birthday" ); 
   String s3; 
   
   // òåñòèðîâàòü ïåðåãðóæåííûå îïåðàöèè ðàâåíñòâà è îòíîøåíèé 
   cout << "s1 is \"" << s1 << "\"; s2 is \"" << s2 
   << "\"; s3 is \"" << s3 << '\"' 
   << boolalpha << "\n\nThe results of comparing s2 and s1:" 
   << "\ns2 == s1 yields " << ( s2 == s1 ) 
   << "\ns2 != s1 yields " << ( s2 != s1 ) 
   << "\ns2 > s1 yields " << ( s2 > s1 ) 
   << "\ns2 < s1 yields " << ( s2 < s1 ) 
   << "\ns2 >= s1 yields " << ( s2 >= s1 ) 
   << "\ns2 <= s1 yields " << ( s2 <= s1 ); 
   
   
   // òåñòèðîâàòü ïåðåãðóæåííóþ îïåðàöèþ "ïóñòî" (!) êëàññà String 
   cout << "\n\nTesting !s3:" << endl;
    
   if ( !s3 ) 
   { 
      cout << "s3 is empty; assigning s1 to s3;" << endl; 
      s3 = s1; // ïðîòåñòèðîâàòü ïåðåãðóæåííîå ïðèñâàèâàíèå 
      cout << "s3 is \"" << s3 << "\""; 
   } // êîíåö if 
   
   // òåñòèðîâàòü ïåðåãðóæåííóþ îïåðàöèþ êîíêàòåíàöèè ñòðîê 
   cout << "\n\ns1 += s2 yields si = "; 
   s1 += s2; // ïðîòåñòèðîâàòü ïåðåãðóæåííóþ êîíêàòåíàöèþ 
   cout << s1; 
   
   // òåñòèðîâàòü êîíñòðóêòîð ïðåîáðàçîâàíèÿ 
   cout << "\n\ns1 += \" to you\" yields" << endl; 
   s1 += " to you"; // test conversion constructor 
   cout << "s1 = " << s1 << "\n\n"; 
   
   // òåñòèðîâàòü îïåðàöèþ âûçîâà () äëÿ ïîäñòðîêè 
   cout << "The substring of s1 starting at\n" 
   << "location 0 for 14 characters, s1(0, 14), is:\n" 
   << s1( 0, 14 ) << "\n\n"; 
   
   // òåñòèðîâàòü ñëó÷àé ïîäñòðîêè "äî êîíöà ñòðîêè" 
   cout << "The substring of s1 starting at\n" 
   << "location 15, s1 (15), is: " 
   << s1( 15 ) << "\n\n"; 
   
   // òåñòèðîâàòü êîíñòðóêòîð êîïèè 
   String *s4Ptr = new String( s1 ); 
   cout << "\n*s4Ptr = " << *s4Ptr << "\n\n"; 
   
   // òåñòèðîâàòü îïåðàöèþ ïðèñâàèâàíèÿ (=) ñ ñàìîïðèñâàèâàíèåì 
   cout << "assigning *s4Ptr to *s4Ptr" << endl; 
   *s4Ptr = *s4Ptr; // ïðîòåñòèðîâàòü ïåðåãðóæåííîå ïðèñâàèâàíèå 
   cout << "*s4Ptr = " << *s4Ptr << endl; 
   
   // òåñòèðîâàòü äåñòðóêòîð 
   delete s4Ptr; 
   
   // òåñòèðîâàòü èñïîëüçîâàíèå èíäåêñàöèè äëÿ ïîëó÷åíèÿ lvalue 
   s1[ 0 ] = 'Í'; 
   s1[ 6 ] = 'Â'; 
   cout << "\ns1 after s1[0] = 'H' and s1[6] = 'B' is: " 
   << s1 << "\n\n"; 
   
   // òåñòèðîâàòü âûõîä èíäåêñà èç äèàïàçîíà 
   cout << "Attempt to assign 'd' to s1[30] yields:" << endl; 
   s1[ 30 ] = 'd'; // ÎØÈÁÊÀ: èíäåêñ âíå äèàïàçîíà 
   return 0; 
} // êîíåö main
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2014, 15:30 7
Ошибки какие-то странные: в нескольких местах, вместо английской o русская (ostream), вместо ноля - буква О (if ( string2 != 0 )). Откуда взяли метод void String::setstring( const char *string2 ) (в String.срр)? В классе такого нет, есть setString.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
18.07.2014, 17:50 8
Цитата Сообщение от alsav22 Посмотреть сообщение
Ошибки какие-то странные
Да копипаста из pdf как пить дать. В выходные поправлю, если время будет.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
18.07.2014, 19:09 9
Да я, в общем-то, поправил.
Вложения
Тип файла: rar Файлы.rar (3.8 Кб, 2 просмотров)
1
12 / 12 / 0
Регистрация: 31.08.2011
Сообщений: 458
18.07.2014, 23:57  [ТС] 10
Цитата Сообщение от uglyPinokkio Посмотреть сообщение
Да копипаста из pdf как пить дать.
да, оно самое из оттуда самого ). Я с книги примеры копирую себе в компилятор и ,изучая С++, параллельно смотрю на живом выполнении программы. Но вот копипаста из пдф не все символы правильно распознает. Вместо s1 может написать si.
Цитата Сообщение от alsav22 Посмотреть сообщение
вместо английской o русская (ostream)
а как ты это увидел? Я даже и не думал, что копирование так будет происходить.
Цитата Сообщение от alsav22 Посмотреть сообщение
Откуда взяли метод void String::setstring( const char *string2 ) (в String.срр)?
да, это ошибка. Там с большой буквы надо, как ты написал.

Добавлено через 3 минуты
Цитата Сообщение от alsav22 Посмотреть сообщение
Да я, в общем-то, поправил.
а как ты поправил? Я например, вижу один вариант как это можно сделать. В одном окне открыть оригинал а во втором заново напечатать самому, глядя на первый. Тогда все символы точно будут в нужном языке.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
19.07.2014, 00:24 11
Цитата Сообщение от Тимур05 Посмотреть сообщение
а как ты это увидел?
Догадался (с подсказкой компилятора).
Цитата Сообщение от Тимур05 Посмотреть сообщение
а как ты поправил?
Заменил букву.
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
19.07.2014, 05:33 12
Цитата Сообщение от Тимур05 Посмотреть сообщение
да, оно самое из оттуда самого ). Я с книги примеры копирую себе в компилятор и ,изучая С++, параллельно смотрю на живом выполнении программы. Но вот копипаста из пдф не все символы правильно распознает. Вместо s1 может написать si.
Не копируй,набирай руками.
0
19.07.2014, 05:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2014, 05:33
Помогаю со студенческими работами здесь

c:\tsserver\Projects\cpp\codeblocks\MyComp\language\aboutmmz \aboutmmz.hpp|4|fatal error C1083: Cannot open include file: 'windows.h': No such file or
Среда code blocks, компилятор MICROSOFT VISUAL C++ TOOLKIT 2003. Как настроить, чтоб он пути знал?

Как в DEV C++ добавить опцию компилятора *cpp?
Друзья! У меня в папке несколько файлов с расширением cpp и они все должны быть включены в...

Error C1083: Cannot open source file: 'Source.cpp': No such file or directory
Помогите плз!!!!! неделю сражаюсь с VS 2013 и не могу даже запустить простейшую &quot;hello&quot; (((...

Django, ошибка The included URLconf
Всем доброго времени суток. В Django проекте есть приложение, у него такой класс class...

Ошибка компилятора fatal error C1091: ограничение компилятора: длина строки превышает 65535 байт
Компилируя программу вот такой командой: cl /O2 /Oi /GL /EHsc /MD /Gy main.cpp И компилятор...

File.cpp -> file.h
Как мне вставить какое-то любое значение в файл textbox2 в файле MyForm.h из файла MyForm.cpp. ...

Main.cpp No such file or directory
Доброго времени суток. При сборке проекта приведенного ниже, возникают ошибки. Не знаю уже что и...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru