glug: problema con compilatore g++/gcc

asettico asettico@rossomaltese.it
Dom 14 Ago 2005 18:41:03 CEST


vecchipc wrote:
> Ho provato a compilare un semplicissimo listato c++ di prova :
> 
> #include<iostream>
> 
> int main() {
>    cout<<"ciao pippo!"<<'\n';
>    return 0;
> }
> *****
> g++ prova.cpp
> ***
> 
> e mi dā questo risultato :
> 
> bash-2.05b# g++ prova.cpp
> prova.cpp: In function `int main()':
> prova.cpp:5: error: `cout' undeclared (first use this function)
> prova.cpp:5: error: (Each undeclared identifier is reported only once for each
>    function it appears in.)

Tutti i simboli (oggetti, classi, ecc.) della libreria standard di C++ sono 
definiti all'interno del *namespace* std.
Quindi hai 2 possibilitā:
* usi std::cout (se viene riferito una sola volta);
* subito dopo l'include aggiungi using namespace std (se usi diverse volte 
simboli della libreria standard);

Il namespace č stato introdotto nel C++ ANSI allo scopo di evitare 
collisione tra nomi di oggetti di librerie diverse.
Tanto per fare un esempio, immagina se 2 sviluppatori implementassero 1 
libreria di classi ciascuno ed entrambi definissero la classe Frame, senza 
che necessariamente debbano fare la stessa cosa (pensa al un frame di una 
finestra grafica e ad un frame TCP/IP). Senza namespace ci sarebbe una 
collisione nel nome delle 2 classi (di quale libreria?). Se invece ognuno 
definisse il proprio namespace, l'ambiguitā sparirebbe (lib1::Frame e 
lib2::Frame sono diversi).
Ovviamente, se nello stesso file specifichi
	using namespace lib1;
	using namespace lib2;
siamo daccapo!
Comportamento analogo in Java ce l'hai con le parole chiavi package/import.
HTH
-- 
  ,= ,-_-. =.  asettico ~ [ http://rossomaltese.it/   ]
((_/)o o(\_)) OpenPGP ~~ [ 1024D/1CB926BA 2003-11-29 ]
  `-'(. .)`-'
      \_/      http://keyserver.linux.it/pks/lookup?exact=on&search=asettico

-------------- parte successiva --------------
Un allegato non testuale č stato rimosso....
Nome:        signature.asc
Tipo:        application/pgp-signature
Dimensione:  155 bytes
Descrizione: OpenPGP digital signature
Url:         http://lists.linux.it/pipermail/glug/attachments/20050814/c30b8805/signature.pgp


Maggiori informazioni sulla lista glug