Newsgroup: it.comp.lang.c++
Titolo: ***** D O V E S B A G L I O in questo codice? *****

Ciao,
    sapreste dirmi che "cacchio" c'è di sbagliato in questo frammento?
---------cut--------
inline void order ( fstream *file )         // as Bubble...
{
    file.close();
        //  request for member `close' in `file', which is of non-aggregate
type `fstream *'
    file.open( ios::in | ios::out );
        //  request for member `open' in `file', which is of non-aggregate
type `fstream *'
    file.seekp( ios::beg );
        //   request for member `seekp' in `file', which is of non-aggregate
type `fstream *'
unsigned int lines;
char line1 [ 2*(j+1) ], line2 [ 2*(j+1) ];
   for ( lines = 20; file.getline( line1 , 20) =! NULL; lines++);
        //  request for member `getline' in `file', which is of
non-aggregate type `fstream *'
   cout << lines << " linee." << endl;
   for ( unsigned int i = 20 ; i < lines - 1; i++ )
      for ( unsigned int k = 20; k < lines - 1; k++ )
         {
         file.getline( line1, k );
                 //  request for member `getline' in `file', which is of
non-aggregate type `fstream *'
         file.getline( line2, k +1 );
                //   request for member `getline' in `file', which is of
non-aggregate type `fstream *'
         if ( line1 > line2 )
            {
            seekp( k*2*(j+1), ios::beg );
                   //   implicit declaration of function `int seekp(...)'
            file << line2 << endl << line1 << endl;
                  //    invalid operands `fstream *' and `char[10]' to
binary `operator <<'
            }
         };
}
----endcut------
Quasi sicuramente, credo, che l'errore sia uno solo: l'uso dell' fstream
object... ma come correggerlo?
Grazie, davvero.
PS. Se vi siete chiesti xkè nn ho mai postato una linea di codice adesso,
credo che abbiate trovato la risposta a questa domanda...

 Ciao,
Vedi di imparare a scrivere sui NG... NON c'è bisogno di urlare nei 
subject!
PS: perchè non elimini i commenti inutili dal tuo codice? O non sai 
neanche che sono commenti???
-- 
Luc.

 type `fstream *'
file č un fstream*.
Per invocare il metodo close():
  file->close()
Max

 neanche che sono commenti???
Forse se contassi fino a dieci prima di posare le tue dita sulla tastiera...
Quelli sono commenti che ho inserito x indicare il tipo di errore che il
compilatore mi segnala.

     file.close();
file->close(); --- file e' un *puntatore*, vero?  Da questo punto in
avanti, non ho letto piu'...  Inoltre mi sembra che, da un punto di
vista logico, l'apertura e la chiusura di *file vadano lasciate al
caller.
-- 
Maurizio Loreti  - Linux Is Not UniX -  
http://www.pd.infn.it/~loreti/mlo.html
Univ. of Padova, Dept. of Physics - Padova, Italy            
lor...@pd.infn.it

 Max
ehi, funziona!
L'avevo studiato, (si puo' fare anke con "(*this)." ) ma forse sbattendoci i
denti lo si impara meglio ^_^ ...
Adesso è rimasto un altro problemino... il frammento
------------------------------
            {
            file->seekp( k*2*(j+1), ios::beg );
            file << line2 << endl << line1 << endl;
            }
--------------------------------
mi da questo errore:
     " invalid operands `fstream *' and `char[10]' to binary `operator <<' "
che dipenda dal fatto che uso un puntatore a obj?
Grazie, comunque x il tuo aiuto
Zao, Dan

il 13:24, lunedì 25 febbraio 2002, Tjlt!® ha scritto:
a parte il subject orribile, e le giuste lamentele di Luc...
1) hai incluso tutto? io per esempio avevo un errore su uno stringstream 
perche' pensavo basta l'iostream, mentre invece dovevo includere anche 
sstream.
2) la keyword "inline" non si usa solo per le funzioni che sono veramente 
inline? (e non so poi su che compilatori tale keyword venga veramente 
ottimizzata)
Giulio
-- 
PGP Key fingerprint = 1A94 043F 1946 7AA9 CB2E  D5ED F83D 2083 25B4 2E27

 che dipenda dal fatto che uso un puntatore a obj?
Certo. Devi dereferenziarlo.
   *file <<  line2 << ...
Max


Tombola! Grazie Max mi sei stato davvero d'aiuto. ^_^
Ciao, Dan

 ottimizzata)
hai ragione... all'inizio la funz. doveva essere implementata in un altro
modo...
poi ho cambiato... cmq il compilatore puņ decidere di ignorare le direttive
inline...
Ciao, Dan

 fstream object... ma come correggerlo?
ripassando la differenza tra l'accesso diretto e tramite puntatore
se passi fstream * file, poi devi usare file->close() , non file.close()

 compilatore mi segnala.
Mentalità leggerissimamente contorta la tua, vero? Ti rendi conto che poi 
il codice è praticamente illeggibile sul NG?
-- 
Luc.

 Tombola!
Ma tu programmi 'a fortuna'?
-- 
Luc.

         Oscar Wilde
"La resistenza è inutile"
        Locutus di Borg
-- 
Luc.