C++ Manuale di Stile -- Errata Corrige


Inevitabilmente, ogni edizione di un libro porta con sé alcuni errori ed imprecisioni. Gran parte delle inesattezze riscontrate dai lettori e da una mia rilettura sono di carattere squisitamente tipografico (spazi saltati, discendenti di alcune lettere troncati, eccetera) e sono state introdotte in fase di impaginazione. Poiché non pregiudicano la correttezza del testo, ho preferito non riportarle in quanto segue perché del tutto irrilevanti per la maggior parte dei lettori. Viceversa, nel libro vi sono 9 errori che vale la pena di far notare, di cui uno decisamente rilevante (vedere sotto, pagina 206). Come vedrete, non si tratta di errori gravi, ma in accordo allo spirito di precisione che mi ha portato a scrivere il libro, ho ritenuto giusto renderli noti ai lettori.

Un ringraziamento va a tutti i lettori che mi hanno segnalato gli errori riscontrati. Tra questi voglio ricordare Fabio Cavanna e Roberto Romani, che per primi mi hanno fatto notare alcuni degli errori qui riportati. Come sempre, vi invito a segnalarmi ogni errore (di qualunque tipo) che vi capiti di notare nella lettura e nell'uso del libro.

Pag. 16
Nella terzultima riga, "Listato 1" va cambiato in "Listato 2".

Pag. 28, 29, 33, 34
Le guardie di inclusione presenti nei listati (es. __BASE__) contengono un doppio underscore. Secondo lo standard ANSI/ISO, questo tipo di identificatore è riservato per l'implementazione. È quindi opportuno sostituire le guardie con identificatori con un solo underscore finale, es. BASE_.

Pag. 54
La posizione delle parentesi nel secondo "if" del Listato 21é errata:

if( ( ( d * e < f ) || ( g + h < i ) ) && ( a + b < c ) )

dovrebbe essere:

if( ( d * e < f ) || ( ( g + h < i ) && ( a + b < c ) ) )

Pag. 62
Il Listato 32 dovrebbe essere:

int *const s, *t ; 

Pag. 93
Manca una parentesi graffa chiusa nel Listato 60:

else
  {
  ....
  }  <------

Pag. 118
Manca una "n" nel Listato 80, ovvero:

~io_counter() { if( --cout == 0 ) .... }

dovrebbe essere:

~io_counter() { if( --count == 0 ) .... }

Pag. 188
Nell'ultimo paragrafo, O(n)log(n) dovrebbe essere O(n log(n))

Pag. 206
Nel Listato 143, le righe:

Bag* b = &s ;
b->add( 1 ) ;

Vanno modificate in:

s.Bag::add( 1 ) ;

Pag. 207
Nel Listato 144, la funzione hasMember dovrebbe essere inline, come spiegato nel testo soprastante il listato.

Pag. 265
Nel Listato 180, il costruttore di PersonImpl deve ovviamente essere PersonImpl(), non PersonData() come erroneamente riportato. Inoltre la dichiarazione della classe PersonData all'inizio del listato è inutile.