Newsgroup: it.comp.lang.c++
Titolo: perchè quell'errore?

Premetto che sono alle prime armi... quello che segue è il codice e
subito dopo l'output di errore di g++. Qualcuno sa dirmi il perchè e
cosa fare?
#include <iostream>
#include <fstream>
#include <string>
class id3 {
 private:
  int i;
  char tag[129];
  string stag();
  string tmp();
 protected:
 
 public:
  string titolo();
  string autore();
  string album();
  string anno();
  string commento();
  unsigned char genere;
  id3();
  void leggi(char *nomefile);
};
id3::id3()
{
};
void id3::leggi(char *nomefile)
{
  ifstream f;
  f.open(nomefile);
  if (f.bad())
    cerr << "Apertura file " << nomefile << " non riuscita" << endl;
  f.seekg(-128,ios::end);
  f.read(tag, 128);
  titolo.assign(30,'c');
  cout << titolo << endl; // vediamo se funziona...
}
int main(int argc,char *argv[])
{
  id3 ciao;
  ciao.leggi(argv[1]);
  return 0;
}
//FINE
[darkspe@darkspe programmazione]$ g++ id3.C -o ciao 
id3.C: In method `void id3::leggi (char *)':
id3.C:58: request for member `assign' in `this->id3::titolo', which is 
of non-aggregate type `{unknown type}'
id3.C:59: no match for `_IO_ostream_withassign & << {unknown type}'
/usr/include/g++-3/iostream.h:77: candidates are: ostream 
&ostream::operator<< (char)
/usr/include/g++-3/iostream.h:78:                 ostream 
&ostream::operator<< (unsigned char)
/usr/include/g++-3/iostream.h:79:                 ostream 
&ostream::operator<< (signed char)
/usr/include/g++-3/iostream.h:80:                 ostream 
&ostream::operator<< (const char *)
/usr/include/g++-3/iostream.h:82:                 ostream 
&ostream::operator<< (const unsigned char *)
/usr/include/g++-3/iostream.h:84:                 ostream 
&ostream::operator<< (const signed char *)
/usr/include/g++-3/iostream.h:85:                 ostream 
&ostream::operator<< (const void *)
/usr/include/g++-3/iostream.h:86:                 ostream 
&ostream::operator<< (int)
/usr/include/g++-3/iostream.h:87:                 ostream 
&ostream::operator<< (unsigned int)
/usr/include/g++-3/iostream.h:88:                 ostream 
&ostream::operator<< (long int)
/usr/include/g++-3/iostream.h:89:                 ostream 
&ostream::operator<< (long unsigned int)
/usr/include/g++-3/iostream.h:91:                 ostream 
&ostream::operator<< (long long int)
/usr/include/g++-3/iostream.h:92:                 ostream 
&ostream::operator<< (long long unsigned int)
/usr/include/g++-3/iostream.h:94:                 ostream 
&ostream::operator<< (short int)
/usr/include/g++-3/iostream.h:95:                 ostream 
&ostream::operator<< (short unsigned int)
/usr/include/g++-3/iostream.h:97:                 ostream 
&ostream::operator<< (bool)
/usr/include/g++-3/iostream.h:99:                 ostream 
&ostream::operator<< (double)
/usr/include/g++-3/iostream.h:100:                 ostream 
&ostream::operator<< (float)
/usr/include/g++-3/iostream.h:102:                 ostream 
&ostream::operator<< (long double)
/usr/include/g++-3/iostream.h:106:                 ostream 
&ostream::operator<< (ostream &(*) (ostream &))
/usr/include/g++-3/iostream.h:107:                 ostream 
&ostream::operator<< (ios &(*) (ios &))
/usr/include/g++-3/iostream.h:108:                 ostream 
&ostream::operator<< (streambuf *)


"Vi or emacs? .....OpenOffice! =)"
 

 friend ostream& operator<<( ostream&, const TUO_TIPO&);
Puoi meglio spiegarmi cosa significa?
Un'altra cosa: se volessi creare un database e gestirlo tramite c++, che
dovrei fare?

   cout << titolo << endl; // vediamo se funziona...
ecco l'errore: tu stai cercando di usare titolo come se fosse una 
variabile, ma l'hai dichiarata come una funzione.
ciao Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.73, higher than 99% of all previous test takers.
C Language: 3.79, higher than 92% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it