Newsgroup: it.comp.os.linux.development
Titolo: GCC 3.0 e classe string

ho installato GCC 3.0 (g++) e ho provato a ricompilare il mio codice
(funzionante sotto gcc 2.96) ma ricevo ERRORE se non uso std::string e
using namespace std.
Questo avviene perchè GNU ha cercato di essere + conforme allo
standard C++ ?
grazie
 Marco

 standard C++ ?
Sě.
Max

namespace std").
grazie mille per la risposta!
in Thinking in C++ viene sempre ripetuto di usare "using namespace
std". quindi ho pensato che fosse la procedura standar d e ho usato
quella.....ma forse non è così...
thx
 Marco


Quella direttiva importa nel namespace corrente tutti i nomi definiti in
std visibili in quell'unitą di compilazione. Puņ essere comoda perchč ti
risparmia la fatica di dover scrivere std:: un mucchio di volte, ma usata
sistematicamente annulla i vantaggi di avere lo spazio dei nomi della
libreria standard distinto da quello della tua applicazione e aumenta il
rischio di conflitti. Inoltre, se stai scrivendo una libreria, č buona
norma, a mio avviso, evitare tout-court di inserire direttive 'using' nei
file header destinati ad essere inclusi da codice client.
Max

 quella.....ma forse non è così...
per essere standard è standard; però ricordati che i namespace sono fatti 
apposta per evitare di avere conflitti tra i nomi delle varie librerie, tra 
cui quella standard che risiede nel namespace std. Facendo "using namespace 
std" annulli tutti i vantaggi dei namespace.
Questo non toglie che, specie nei piccoli programmi, possa essere utile 
importare tutti i nomi nel namespace globale.
Un'ultima osservazione: non scrivere *mai* using namespace std all'interno 
di un header, altrimenti la direttiva using verrà estesa anche a tutti i 
file che includono quell'header.
Ciao
Anto
-- 
Antonio Cuni, 19 anni, studente
Brainbench C++ Master: 4.6, higher than 98% of all previous test takers.
C Language: 3.32, higher than 79% of all previous test takers.
Guida C/C++ di Programmazione.it: 
http://cpp.programmazione.it

file che includono quell'header.
Cavoli! questo è notevole! grazie per avermelo fatto notare!!!!
Da quanto avevo letto sembrava che "using namespace std" fosse 1 cosa
sempre da farsi.....invece tu e gli altri mi fate notare che non è
affatto così!!!!
In mente ho ancora 1 po' di confusione......io uso ,per esempio,
std::string ogni volta che mi serve 1 stringa. a questo punto "using
namespace std" mi serve oppure no?
grazie mille
 Marco

 namespace std" mi serve oppure no?
Mah, potresti mettere la manipolazione delle stringhe in un blocco:
int main () {
	{
		using namepsace std;
		string s = "blablabla";
 
		cout << "prova: " << s << endl;
	}
	string s;		 	 /* ERRORE */
	cout << "prova: " << s << endl;  /* ERRORE */
	return 0;
}
Cmq, non so quanto sia valida questa soluzione, non ho molta
dimestichezza con il C++.
ciao
Kronos
-- 
Home: 
http://kronoz.cjb.net
Ci sono due cose che l'uomo non puo` nascondere:
essere ubriaco ed essere innamorato.

 namespace std" mi serve oppure no?
no, perché std::string qualifica completamente il nome di tipo a cui vuoi 
accedere. Cmq se vuoi velocizzare le cose ma non vuoi usare "using 
namespace..." puoi scrivere anche:
using std::string;
e poi chiamarla semplicemente string.


e poi chiamarla semplicemente string.
WOW!!! questo č molto utile!!!
mettendo 3 using per string , cout , endl risolvo al meglio!
grazie mille
 Marco