Errata

Practical C++ Programming

Errata for Practical C++ Programming

Submit your own errata for this product.

The errata list is a list of errors and their corrections that were found after the product was released. If the error was corrected in a later version or reprint the date of the correction will be displayed in the column titled "Date Corrected".

The following errata were submitted by our customers and approved as valid errors by the author or editor.

Color key: Serious technical mistake Minor technical mistake Language or formatting error Typo Question Note Update

Version Location Description Submitted By Date submitted Date corrected
Printed
Page not part_number
.

Anonymous    Jun 01, 2001
Printed
Page 40
under "Revision history": changed "PVCS" to "PCVS"

Anonymous    Jan 01, 1998
Printed
Page 43
paragraph 1 under "Indentation and Code Format," line 3

changed "Example 3-5" to "Example 3-1"

Anonymous    Jul 01, 1998
Printed
Page 58
Example 4-3

floating = (1/2) + (1/2) assign floating 1.0 now reads floating = (1/2) +
(1/2) assign floating 0.0.

Anonymous    Jun 01, 2001
Printed
Page 58
In Example 4.3. float1/float1.c

main()
{
...
floating = (1 / 2) + (1 / 2); //assign floating 0.0
...
return(0);
}

The floating assignment now reads 1.0

Anonymous    Sep 01, 1999
Printed
Page 59
Table 4-3, last line

The x is missing.

NN

should be:

xNN

Note from the Author or Editor:
Reader is correct.

Anonymous   
Printed
Page 70
4th para: put "'/0'" in constant-width font

Anonymous    Jan 01, 1998
Printed
Page 75
code block in "NOTE":

const int first_part = 3;
const int second_part = 7;

should be:

const int FIRST_PART = 3;
const int SECOND_PART = 7;

Anonymous   
Printed
Page 78
first paragraph

10010100 base 2 now reads 1001 0100 (not 1000 0100), which is 94 base 16 (not
84).

Anonymous    Jun 01, 2001
Printed
Page 78
Question 5-3

The example code fails to include #include <iostream.h>--If source is copied
directly from book, program will not compile.

Anonymous   
Printed
Page 89

The sentence before the last sentence now reads:

... by putting current_number into old_number and
putting next_number into current_number.

Anonymous    Jun 01, 2001
Printed
Page 90
two lines above the "typedef" heading:

changed "5.0" to "50"

Anonymous    Jan 01, 2000
Printed
Page 102
example 7-1: made the line

cin >> oper_char >> value;

into:

cin >> oper_char;
cin >> value;

Anonymous    Jan 01, 1998
Printed
Page 102
Example 7-1.

Example 7-1. calc/calc.cc
should be:
Example 7-1. calc1/calc.cc

Note from the Author or Editor:
Reader is correct.

Anonymous   
Printed
Page 103
changed "operator" to "oper_char" three times in code and once

in text

Anonymous    Jan 01, 1998
Printed
Page 105
1st paragraph

make determines what compilation commands are needed
and execute them.

should be:

make determines what compilation commands are needed
and executes them.

Note from the Author or Editor:
execute them -> executes them.

Anonymous   
Printed
Page 106
last code block, line 2: made the line

cin >> value >> operator;

into:

cin >> value;
cin >> oper_char;

and changed "operator" to "oper_char" in the third line from the end
of that code example

Anonymous    Jan 01, 1998
Printed
Page 106
In the example at the bottom, the undefined variable operator was

replaced with oper_char (three times).

Anonymous    Jun 01, 2001
Printed
Page 107
changed the line

cin >> oper_char >> value;

to:

cin >> oper_char;
<in between them goes the "if" line)
cin >> value;

Anonymous    Jan 01, 1998
Printed
Page 107
Example 7-2

The filename now reads calc3.cc (not calc3.c).

Anonymous    Jun 01, 2001
Printed
Page 107
In the description of the result the debug output

## after cin +
## after if +

is missing after the line:

Enter operator amd number: + 123

Anonymous   
Printed
Page 111
Example 7-3

The alignment on the right side of the example has been fixed.

Anonymous    Jun 01, 2001
Printed
Page 120
Begining of Example 8-4

In Example 8-4.seven/seven.cc. the first line "include <iostream.h>" is missing the
"#" in front of include.It should be "#include <iostream.h>. Program will not compile
if "#" is left out.

Note from the Author or Editor:
include -> #include

Anonymous   
Printed
Page 128
In Answer 8-1 the variable

centigrade

now reads:

celsius (x2)

according to the Example 8-3 on page 119.

Anonymous    Jun 01, 2001
Printed
Page 128
Figure 9.1

The last brace in the highlighted block faces the wrong way.

Note from the Author or Editor:
Page 130, Figure 9-2, last shaded { should be }.

Anonymous   
Printed
Page 130
Figure 9-2 (above the line '++count;')

The second 'Block' is now closed with a "}"
(formerly a "{")

Anonymous    Jan 01, 2000
Printed
Page 134
In the NOTE, changed

the type defaults to int

to:

many compilers assign a type int by default.

Anonymous    Sep 01, 1999
Printed
Page 137
1st paragraph under "Reference Parameters and Return Values"

In the first line, "Chapter 4, Basic Declarations and Expressions" now reads
"Chapter 5, Arrays, Qualifiers, and Reading Numbers."

Anonymous    Jun 01, 2001
Printed
Page 138
The last sentence before example 9-7 no longer has

a "{" at the end of it.

Anonymous    Jan 01, 2000
Printed
Page 138
replaced Example 9-7. value/bic.cc with the following

const int ARRAY_SIZE = 5 // Size of the array
int item_array[ARRAY_SIZE] = {1, 2, 5000, 3, 4}; // An array

int &biggest(void)
{
int index; // Current index
int biggest; // Index of the biggest element

// Assume the first is the biggest
biggest = 0;
for (index = 1; index < ARRAY_SIZE; ++index) {
if (item_array[biggest] < item_array[index])
biggest = index;
}
return (item_array[biggest]);
}

Anonymous    Dec 01, 1998
Printed
Page 138
Example 9-7

This example now reads:

int &biggest(int array[], int n_elements)
{
int index; // Current index
int biggest; // Index of the biggest element

// Assume the first is the biggest
biggest = 0;
for (index = 1; index < n_elements; ++index) {
if (array[biggest] < array[index])
biggest = index;
}

return (array[biggest]);
}

Anonymous    Jun 01, 2001
Printed
Page 139
code sample -3, line -1: replaced

cout << biggest(item_array, 5) << '
':

with

cout << biggest() << '
';

Anonymous    Dec 01, 1998
Printed
Page 139

The 3rd line in the first block of code now reads:

biggest(item_array, 5) << '
';

Anonymous    Jun 01, 2001
Printed
Page 139

The 5th paragraph now reads:

The function biggest returns a reference to item_array[2].
Remember that in the following code, biggest() is
item_array[2]. The following three code sections all
perform equivalent operations. The actual variable,
item_array[2], is used in all three:

The last line of the 3rd code block now reads:

biggest() = 0

Also, the last line of code on the page now reads:

biggest() = 0

Anonymous    Jun 01, 2001
Printed
Page 139

In the first coding example it read:

"cout << "The biggest element is " <<
biggest(item_array, 5) << '
'; "

It now reads:

"cout << "The biggest element is " <<
biggest( ) << '
'; "

Anonymous    Sep 01, 1999
Printed
Page 139
In the example with the comment

// Using a simple reference

the line:

int big_reference = &item_array[2];

should be:

int &big_reference = item_array[2];

Note from the Author or Editor:
Reader is correct.

Anonymous   
Printed
Page 141

The first sentence of Array Parameters did read:

So for you've dealt only with simple parameters.
now reads:
So far you've dealt only with simple parameters.

Anonymous    Jan 01, 2000
Printed
Page 141
next-to-last code example, line 2: changed "...[][10]" to

"...[10][]"

Anonymous    Jan 01, 1998
Printed
Page 143
First line on page, the word "list" is now in Normal font

(formerly constant-width)

Anonymous    Jan 01, 2000
Printed
Page 143
In the first four blocks of code in the section "Default Parameters"

...(const rectangle &rectangle...

now reads:

...(const int width, const int height...

and:

draw(big_rectangle...

now reads:

draw(3,5...

Anonymous    Jun 01, 2001
Printed
Page 155

In example 10-4, line 5 now reads:

#define MAX = 10

Anonymous    Jan 01, 2000
Printed
Page 155

Question 10-2 now reads:

1 //Warning, spacing is very important
2
3 #include <iostream.h>
4
5 #define MAX = 10
6
7 int main()
8 {
9 int counter;
10
11 for (counter =MAX, counter > 0;
12 --counter)
13 cout << "Hi there
";
14
15 return (0);
16 }

Anonymous    Jun 01, 2001
Printed
Page 155

The text for Question 10-3 now reads:

Example 10-5 computes...

Anonymous    Jun 01, 2001
Printed
Page 155
Example 10-4

Line 5 did read
#include MAX = 10
Now it reads
#include MAX =10

Anonymous    Jul 01, 2000
Printed
Page 155
Question 10-2, sentence 1: changed "Example 10-2" to

"Example 10-4"

Anonymous    Jul 01, 1998
Printed
Page 155
Example 10-4, line 5: changed

#define MAX=10
to
#define MAX 10

Anonymous    Jul 01, 1998
Printed
Page 156

The heading of example 10-6 did read:

Example 10-6. dis/die.cc
now reads:
Example 10-6. die/die.cc

Anonymous    Jan 01, 2000
Printed
Page 157
2nd line on page

const box pink_box(1.0, 4.5);

now reads:

const box pink_box(1, 4);

Anonymous    Jun 01, 2001
Printed
Page 161
Changed the font style of paragraphs from Question 10-5 to Question 10-6

from italics to regular.

Anonymous    Dec 01, 1998
Printed
Page 164
In Answer 10-4, the line

void exit();

was removed.

Anonymous    Jun 01, 2001
Printed
Page 165

Answer 10-5 now reads:

The problem is that the preprocessor does not understand C++ syntax. The
macro call

SQR(counter+1)

expands to

(counter+1 * counter+1)

The result is not the same as ((counter+1) * (counter+1)).

To avoid this problem, use inline functions instead of parameterized macros.

inline int SQR(int x) { return (x*x);}

If you must use parameterized macros, enclose each use of the parameter in
parnetheses.

#define SQR(x) ((x) * (x))

Anonymous    Dec 01, 1998
Printed
Page 167-168
All of Table 11-1 now appears on page 168 so the two lists of values

are not broken up.

Anonymous    Jun 01, 2001
Printed
Page 169
In the detailed explanation after "This is because:", the value 0x41 has

been placed under 0x71. It was too far left.

Anonymous    Jun 01, 2001
Printed
Page 170
explanation for & operator

The "&" has been placed above the line.

Anonymous    Jun 01, 2001
Printed
Page 171
explanation for | operator

The "|" has been placed above the line.

Anonymous    Jun 01, 2001
Printed
Page 171
explanation for ^ operator

The"^" has been placed above the line.

Anonymous    Jun 01, 2001
Printed
Page 178
code at bottom

The line:

graphics[(x)/8][y] |= (0x80 >> ((x)%8))

now reads:

graphics[x/8][y] |= (0x80 >> (x%8));

Anonymous    Jun 01, 2001
Printed
Page 179
Example 11-2

The line:

graphics[(x)/8][y] |= (0x80 >> ((x)%8))

now reads:

graphics[x/8][y] |= (0x80 >> (x%8));

Anonymous    Jun 01, 2001
Printed
Page 180-181
The sentence

Finally, at the heart ...

now follows the table as introduction for the programming code.

Anonymous    Jun 01, 2001
Printed
Page 181
replaced Question 11-2 and example 11-3 - contact me for the new info

Anonymous    Jan 01, 1998
Printed
Page 186
code at top

field-type field-name

now reads:

field-type field-name; (x2)

Anonymous    Jun 01, 2001
Printed
Page 189
The first code segment now has a "}" right after the last line

main()
{
data.f_value ...
data.i_value ...
...
data.f_value ...
i = data.i_value ...
}

Anonymous    Jan 01, 2000
Printed
Page 190
1st line of code under "typedef"

typedef type-declaration

now reads:

typedef type-declaration;

Anonymous    Jun 01, 2001
Printed
Page 190
between first and second Table; second Table itself

Copy/Paste Error
----------------------------------------------------

first Error:
------------

struct foo {
int two_bits:3; ---> should be: int two_bits:2;
};

second Error:
--------------

Bit Pattern | Decimal value
10 | -2
11 | -1
000 | 0 ---> should be: 00 0
001 | 1 ---> should be: 01 1

Note from the Author or Editor:
This is the 2nd edition. Reader is correct.

Anonymous   
Printed
Page 192
First line of the large code segment in the middle of

the page now reads:

enum day_of_the_week today = TUESDAY;

Anonymous    Jan 01, 2000
Printed
Page 192
2nd block of code

enum enum-name {tag-1, tag-2, . . .} variable-name

now reads:

enum enum-name {tag-1, tag-2, . . .} variable-name;

Anonymous    Jun 01, 2001
Printed
Page 207

The code at the top of this page did read:

stack::~stack(void)
now reads:
inline stack::~stack(void) {

Anonymous    Jan 01, 2000
Printed
Page 209

The first sentence now reads:

The copy constructor...

instead of:

The copy operator...

Anonymous    Jun 01, 2001
Printed
Page 209

2nd box should read:

a_stack.stack() called

Anonymous   
Printed
Page 210
Near the bottom of the page

call_type first_var
now reads:
class_type first_var

Anonymous    Jan 01, 2000
Printed
Page 215
Exercise 13-4, under Member functions

int small_set::test(void);

now reads:

int small_set::test(int item);

Anonymous    Sep 01, 1999
Printed
Page 228
para 1, last line: changed "11 chapters" to "14 chapters"; and

in para 4, line 2, changed "Pennsylvania Ave." to "W. Pennsylvania
Ave."

Anonymous    Jan 01, 1998
Printed
Page 230
the figure on this page is new

Anonymous    Jan 01, 1998
Printed
Page 230
Example 15-5 (init-a/init-a.cpp)

void init_array_1(int data[])
{
int index;

for (...){
....
}

should be

void int_array_1(int data[])
{
int index;

for (...){
....
}
}

Anonymous   
Printed
Page 232
line -4

"If you put the const after the *, we tell C++ that the data is constant."

now reads

"If you put the const after the *, we tell C++ that the pointer is constant."

(changed "data" to "pointer")

Anonymous    Dec 01, 1998
Printed
Page 241
4th line

command options file1 file1 file3 ...

should be:

command options file1 file2 file3 ...

Note from the Author or Editor:
Reader is correct, but page is 242

Anonymous   
Printed
Page 261
para. 7 under "The End-of-Line Puzzle," lines 1 and 5

changed "<line feed><carriage return>" to
"<carriage return><line feed>"

Anonymous    Jul 01, 1998
Printed
Page 262
In Example 16-3 the parentheses in the line

(cerr << "Cannot open output file
");

were removed.

Anonymous    Jun 01, 2001
Printed
Page 262
Example 16-3

out_file << cur_char;

now reads:

out_file.put(cur_char);

Anonymous    Jun 01, 2001
Printed
Page 267
Example 16-4, line 27: changed

if (argc != 3) {
to
if (argc != 2) {

Anonymous    Jul 01, 1998
Printed
Page 268
Example 16-4

Cast (unsigned int) is not necessary and it is not the recommended C++ style,
so it has been removed.

Anonymous    Jun 01, 2001
Printed
Page 283
Example 17-1, top of page

The declaration reads:

int lookup(char *);

The author recommends the use of variables in declarations. It now reads:

int lookup(char *name);

Anonymous    Jun 01, 2001
Printed
Page 284
Example 17-2

The line:

istream &extended_getline(char *line, int size, ifstream &file)

now reads:

istream &extended_getline(char *line, int size, istream &file)

Anonymous    Jun 01, 2001
Printed
Page 284
Example 17-2

At the bottom of the page the line:

istream result; /* Result of gets */

now reads:

istream result; /* Result of getline */

Anonymous    Jun 01, 2001
Printed
Page 285
Example 17-3

The line:

char *extended_getline...

now reads:

void *extended_getline...

Anonymous    Jun 01, 2001
Printed
Page 285
Example 17-2, top of page

The line:

return (*result);

should be removed.

Anonymous   
Printed
Page 287
Example 17-4

The code should read:

* (normally stdin) *
************************************************
void &extended_getline(char *line, int size, istream &file)
{

if (playback_file_open) {
&playback_file.getline(line, size);
if (file == cin)
// Echo the input to the standard out
// so the user sees it
cout << line << '
';
) else
file.getline(line, size);

//Did someone ask for a save file?
if (save_file_open)
save_file << line << '
';

}

Anonymous   
Printed
Page 288
Example 17-5, top of page

4th line now reads:

ifstream playback_file...

and the 9th line now reads:

void *extended_getline...

Anonymous    Jun 01, 2001
Printed
Page 289
twice in code, made " John is in the list" into " John is not

in the list"; in the last para., line 2: changed "PVCS" to "PCVS"

Anonymous    Jan 01, 1998
Printed
Page 291
added a semicolon at the end of the "debug_ptr..." line

Anonymous    Jan 01, 1998
Printed
Page 291
code

The lines:

main(argc, argv)
int argc;
char *argv[];

should read:

int // ... main(int argc, char *argv[])


Anonymous   
Printed
Page 292
para. 2 under "Going Through the Output": changed

"C++ allows you to" to "The shell or command-line interpreter
allows you to"

Anonymous    Jul 01, 1998
Printed
Page 299
1st paragraph

In the first sentence the name of the function is missing It should read:

...generated from the procedure number.

Anonymous   
Printed
Page 307

The last sentence before "Runtime Errors" now reads:

...break 49 if point_number == 735...

Anonymous    Jun 01, 2001
Printed
Page 323

2nd line of code at top of page now reads:

complex operator +(real v1, real v2); // Illegal

Anonymous    Jun 01, 2001
Printed
Page 327
In the middle of the page the function number.set() is used, but it has

not been defined yet.

number.set(real, imaginary);

now reads:

number.set_real(real);
number.set_imaginary(imaginary);

Anonymous    Jun 01, 2001
Printed
Page 342
Answers to Chapter Questions

The following was added to the end of the section:

Unfortunately, this only solves part of the problem. Now
we don't call the copy constructor going into the operator
= function. But when we return (*this), the return value
has to be copied, so we still call the copy constructor.
The solution is to return a reference to the class instead
of a copy of the class. Thus our declaration of the operator
= function should be:

trouble &trouble::operator = (const trouble &old_trouble) {

Anonymous    Jun 01, 2001
Printed
Page 344
In Table 19-1

33000.0

now reads:

330000.0

Anonymous    Jun 01, 2001
Printed
Page 345
In "Multiplication" under item 3, the normalized result

+1.3200E+0

now reads:

+1.320E+0

Anonymous    Jun 01, 2001
Printed
Page 347
At the top of the page the line

1/3 as floating point is 3.333-1

now reads:

1/3 as floating point is 3.333E-1

Anonymous    Jun 01, 2001
Printed
Page 357
3rd block of code

Mine reads:
struct person *new_ptr;

Should read:
class person *new_ptr;

since it was declared as a class in the 2nd block of code.

Note from the Author or Editor:
Code should be

person* new_ptr;

Anonymous   
Printed
Page 358
2nd block of code under :delete Operator"

delete []pointer;

should be:

delete[] pointer;

It is better to use only one form.

Anonymous   
Printed
Page 360

5th line of code now reads:

int data; //Data in this element

Anonymous    Jun 01, 2001
Printed
Page 361

1st line of code now reads:

(*new_ptr).data = item

Anonymous    Jun 01, 2001
Printed
Page 362
Example 20-2

name -- name to look for in the list

now reads:

value -- value to look for in the list

and:

int linked_list::find(char *name)

now reads:

int linked_list::find(int value)

and:

while ((strcmp(current_ptr->data, name != 0) &&

now reads:

while (current_ptr->data == value) &&

Anonymous    Jun 01, 2001
Printed
Page 363
2nd paragraph

The sentence:

The variable after_ptr is set to point to the previous value.

now reads:

The variable after_ptr is set to point to the next value.

Anonymous    Jun 01, 2001
Printed
Page 363
code

The lines:

linked_list_item *before_ptr; // Insert before this element
linked_list_item *after_ptr; // Insert after this element

now reads:

linked_list_item *before_ptr; // Insert after this element
linked_list_item *after_ptr; // Insert before this element

Anonymous    Jun 01, 2001
Printed
Page 363
code sample, lines 12, 13, 15, 18: changed all occurances

of "insert_ptr" to "after_ptr"

Anonymous    Jul 01, 1998
Printed
Page 366
In the middle of the page, the sentence

Notice that we do not have to keep track of the variable after_ptr.

now reads:

Notice that we do not have to keep track of the variable before_ptr.

Anonymous    Jun 01, 2001
Printed
Page 367
The 6th paragraph now refers to Figure 20-10, not 20-11.

Anonymous    Jun 01, 2001
Printed
Page 368
The order of the steps does not fit to the order of the steps described

in the text (confusing). The indents before step 3 and 4 have been removed.

Anonymous    Jun 01, 2001
Printed
Page 368-369
Figures 20-9 and 20-10 were switched.

Anonymous    Jun 01, 2001
Printed
Page 369
"private:" was added to the top of class tree.

Anonymous    Jun 01, 2001
Printed
Page 370-371
Figures 20-12 and 20-13 were switched.

Anonymous    Jun 01, 2001
Printed
Page 372
code

result = strcmp(node->word, word);

now reads:

result = strcmp(node->data, word);

Anonymous    Jun 01, 2001
Printed
Page 372
changed first code sample

void tree::enter_one(node *&tree_node, char *word)
{
int result; // Result of strcmp

// See if we have reached the end
if (tree_node == NULL) {
tree_node = new node;

tree_node->left = NULL;
tree_node->right = NULL;
tree_node->word = strdup(word);
}
result = strcmp(node->word, word);
if (result == 0)
return;

if (result < 0)
enter_one(tree_node->right, word);
else
enter_one(tree_node->left, word);
}

(changed "*&node" to "*&tree_node" in line 1, changed
"node" to "tree_node" in subsequent lines.)

Anonymous    Jul 01, 1998
Printed
Page 373
first code sample, lines 5 and 7: changed

"print_tree" to "print_one"

Anonymous    Jul 01, 1998
Printed
Page 373
para. 1 under "The Rest of the Program", last

sentence: changed "print_tree" to "print_one"
(still in constant-width font.)

Anonymous    Jul 01, 1998
Printed
Page 375
Example 20-3, middle of page

for (index = 1; index < sizeof(word); ++index) {

now reads:

for (index = 1; index < sizeof(word) -1; ++index) {

Anonymous    Jun 01, 2001
Printed
Page 387
In the middle of the page, the line

b_stack::b_stack(cont unsigned ...

now reads:

b_stack::b_stack(const unsigned ...

Anonymous    Jun 01, 2001
Printed
Page 387
1st para

There appears to be a missing code example after the first paragraph. It ends in a
colon, indicating something should follow, but nothing does.

Note from the Author or Editor:
Change : to .

Anonymous   
Printed
Page 389
2nd block of code

The line:

letter.send();

now reads:

letter.send_it();

(Compare class mail definition on page 388).

Anonymous    Jun 01, 2001
Printed
Page 389
2nd paragraph

The sentence:

The trouble is that letter is a mail class, so when
we call letter.send() we call the send of the base
class mail.

now reads:

The trouble is that letter is a mail class, so when
we call letter.send_it() we call the send_it of the
base class mail.

Anonymous    Jun 01, 2001
Printed
Page 408
Example 22-1

In the second comment block, the Parameters explanation is senseless because
there is no parameter in the function.

Parameters
the stack -- stack to initialize

should be removed.

Anonymous   
Printed
Page 417
Example 23-2

In the comment block, the function declaration:

int &operator [](int index)

should read:

int &operator [](const unsigned int index)

Anonymous   
Printed
Page 417
Example 23-2, middle of page

BLOCK_SIZE = 100

should be:

BLOCK_SIZE = 10

Anonymous   
Printed
Page 418
last para.: changed "100" to "10" and "308" to "38"

Anonymous    Jan 01, 1998
Printed
Page 419
Example 23-3

The right side of the first comment box should be realigned.

Anonymous   
Printed
Page 426
In the line

((HIGH_BOUND - LOW_BOUND) / (float) (NUMBER_OF_LINES);

a parenthesis is missing before ;.

Anonymous   
Printed
Page 437
Figure 24-1: Corrected two errors

- the #define make_max(type) line (first line) now reads:
#define define_max(type)

- the statement "return (d1)" now appears on the blank line in the
middle of each function in the "generated code" column.

Anonymous    May 01, 1999
Printed
Page 439
In the middle of the page, the line

if (strcmp(d1, d2) < 0

should read:

if (strcmp(d1, d2) > 0

(Compare same function on page 440).

Anonymous   
Printed
Page 452
1st block of code

The 3rd line should read:

#else /* __MSDOS__ */

and the 5th line should read:

#endif /* __MSDOS__ */

Anonymous   
Printed
Page 452
In the first para. of the box "Porting four-letter words," letter is

misspelled as "latter".

Anonymous   
Printed
Page 457
Example 26-1

The number of comment only lines should be 3 instead of 4.

Anonymous   
Printed
Page 464
Example 26-2

A semicolon is missing at the end of line:

char *name = "Test"

Anonymous   
Printed
Page 464
"Revisions", first paragraph

The "need for expendability" should be "need for expandability".

Anonymous   
Printed
Page 480
Example 26-8

$(CCFLAGS)=-g

should read:

$(CCFLAGS) = -g

Anonymous   
Printed
Page 496
4th code block

A semicolon is missing at the end of line:

cout << b_sample.*data_ptr << '
'

INDEX:

Anonymous   
Printed
Page 555
removed the first entry for "standard libraries"

Anonymous    Jan 01, 1998
Printed
Page 556

(556) The try keyword is explained on page 403 and not on page 405.

Anonymous