Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 01-06-2007, 15:57   #1
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
[C++] la libreria standard e i namespaces

Salve,
mi chiedo:

Se all'interno del mio programma faccio uso di cout, cin e anche ifstrem anziché includere

#include <iostream>
#include <fstream>

non posso semplicemente includere il namespace std visto che le classi di entrambi sono specificate in std ?

Se faccio così è ok :

#include <iostream>
#include <fstream>

using namespace std;



ma se faccio così mi dice che non ricnonsce fstream. Ma non dovrebbe trovarlo in std ? :

#include <iostream>
using namespace std;
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2007, 23:12   #2
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da leon84 Guarda i messaggi
Salve,
mi chiedo:

Se all'interno del mio programma faccio uso di cout, cin e anche ifstrem anziché includere

#include <iostream>
#include <fstream>

non posso semplicemente includere il namespace std visto che le classi di entrambi sono specificate in std ?

Se faccio così è ok :

#include <iostream>
#include <fstream>

using namespace std;



ma se faccio così mi dice che non ricnonsce fstream. Ma non dovrebbe trovarlo in std ? :

#include <iostream>
using namespace std;
I namespace del C++ non sono altro che un modo per raggruppare sotto lo stesso nome oggetti logicamente correlati tra di loro. Quando tu importi l'intestazione <iostream> tu rendi disponibili solo gli oggetti (funzioni, etc) definiti in tale intestazione, che non sono necessariamente tutti quelli disponibili nel namespace std, in particolare non importi fstream.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 01-06-2007, 23:43   #3
uomoserio
Senior Member
 
L'Avatar di uomoserio
 
Iscritto dal: Aug 2000
Messaggi: 608
Allora io mi allaccio alla domanda di Leon84 e ne pongo una molto simile e collegata:
per quale motivo, includendo solamente <iostream> (con relativo "using namespace std", ovviamente) riesco ad utilizzare anche la funzione system() che invece, da specifiche, dovrebbe trovarsi in <cstdlib> ?
Ho provato, giuro che funziona e NON ho incluso <cstdlib>, ma soltanto <iostream>.
Come è possibile?
__________________
Intel Core2Quad Q6600 2,4GHz @ 3,0 GHz
2 Gb RAM 667 MHz
ATI HD2900XT
uomoserio è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2007, 00:08   #4
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
Quote:
Originariamente inviato da uomoserio Guarda i messaggi
Allora io mi allaccio alla domanda di Leon84 e ne pongo una molto simile e collegata:
per quale motivo, includendo solamente <iostream> (con relativo "using namespace std", ovviamente) riesco ad utilizzare anche la funzione system() che invece, da specifiche, dovrebbe trovarsi in <cstdlib> ?
Ho provato, giuro che funziona e NON ho incluso <cstdlib>, ma soltanto <iostream>.
Come è possibile?
Probabilmente nella tua versione della libreria viene include cstdlib qualche header e di conseguenza ti vedi anche system. Se non e' previsto dallo standard e' un caso particolare e magari con un altro compilatore la cosa non ti funziona
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 02-06-2007, 12:43   #5
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
è vero.. anche a me con il borland a scuola(che se metto l'using namespace std mi da errore) devo aggiungere stdlib.h e io.h mentre a casa con visual c++ express non me le ha mai richieste.. ma non saprei dire il perchè.. aspetteremo notizie da cionci ed andbin
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 22:01   #6
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
Beh allora non capisco una cosa :

includendo solo <iostrem> e all'occorrenza <fstream> quando mi serve non capisco l'utilità a questo punto di avere il namespace std ...

Mi spiegate ?
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 22:24   #7
marco.r
Senior Member
 
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
I namespace servono per poter distinguere oggetti/funzioni con lo stesso nome forniti la librerie diverse.
Immagino che nessuno si metta a scrivere una classe chiama ofstream , ma potrebbe esserci chi decide di implementare una classe di vettori e matrici, per cui vorrebbe poter "riciclare" il nome vector, o magari qualcun altro potrebbe voler fornire una implementazione alternative delle string.
Ammetto che per la libreria standard il problema e' relativo; in quanto standard, e quindi sempre presente, nella maggior parte dei casi si cerchera' di evitare omonimie con quanto fornisce, ma direi che una riga in piu' val bene il rischio.
Nel caso di librerie di terze parti invece la cosa e' comodissima, perche' permette di evitare collisioni imprevedibili con altre librerie, senza dover anteporre un prefisso a tutto come succede in C.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele
marco.r è offline   Rispondi citando il messaggio o parte di esso
Old 04-06-2007, 22:34   #8
leon84
Senior Member
 
L'Avatar di leon84
 
Iscritto dal: Jul 2002
Città: Napoli
Messaggi: 1964
mmm... mi è poco chiaro ... scusa la mia ignoranza ...

allora : mettiamo che nel mio programma faccio uso di iostream e fstream.

immagino che nella iostream ci sia qualcosa di questo tipo :

namespace std { class X class Y class Z }


nel momento in cui includo anche fstream scommetto che ci sarà anche li

namespace std { class T class F class G }

ciò significa che il namespace precedente che includeva le prime 3 classi è stato esteso con le ulteriori classi di fstream.

Ora nel mio programma uso il namespace std

Questo significa che se faccio riferimento a nomi del tipo X T Z T F G sto utilizzando quelli del namespace std. Dico bene ?

Allora la mia domanda è la stessa : a cosa mi serve usare il namespace se le librerie che uso sono quelle standard ??? Risposta : a nulla.

Ora tu mi dici : il vantaggio si ha se uso classi con lo stesso nome appartenenti però a namespace differenti ... cioè :

mettiamo che la mia classe X sia presente anche in un file chiamato "pippo.h" nel seguente modo :

namespace std2 { class X }

se nel mio programma scrivo :

using namespace std
using namespace std2

in questo modo cmq l'ambiguità non viene risolta giusta ????

Cioè per differenziarli dovrei cmq utilizzare il risolutore di visibilità "::" e cioè

std::X
std2::X

Allora ancora una volta non capisco davvero l'utilità di questo namespace ... mah ...
leon84 è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2007, 09:27   #9
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da ndakota Guarda i messaggi
è vero.. anche a me con il borland a scuola(che se metto l'using namespace std mi da errore) devo aggiungere stdlib.h e io.h mentre a casa con visual c++ express non me le ha mai richieste.. ma non saprei dire il perchè.. aspetteremo notizie da cionci ed andbin
Fagli cambiare compilatore a scuola...perché usate un compilatore vecchio di 10 anni. Non è per caso un ambiente di sviluppo testuale che si chiama Turbo C++ ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2007, 09:41   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da leon84 Guarda i messaggi
Cioè per differenziarli dovrei cmq utilizzare il risolutore di visibilità "::" e cioè

std::X
std2::X

Allora ancora una volta non capisco davvero l'utilità di questo namespace ... mah ...
No, puoi mettere using del namespace std ed utilizzare X di std senza risolutore di visibilità.
Mentre userai std2::X per X...

Ti faccio un esempio: ho un programmone immenso...devo estenderlo utilizzando un nuova versione di una libreria...soltanto che non posso rinunciare ad alcune classi/funzioni della libreria vecchia che non sono implementate nella nuova, mentre alcune altre classi/funzioni collidono.
Quindi metto la libreria nuova in un namespace diverso da quello della libreria vecchia ed uso il risolutore di visibilità per accedere alle nuove classi/funzioni che mi servono senza modificare una virgola del programma vecchio.

Altro esempio: scrivo un sistema operativo e quindi ho implementato nuovamente tutte le funzioni base di input e output della libreria standard. Fin quando faccio il testing sul sistema operativo ospite continuo ad usare la libreria standard con il namespace std. Quando vado a compilare il mio sistema operativo uso il namespace, mettiamo, std2 al posto di std. In modo da linkare al programma la libreria standard per il nuovo sistema operativo invece di quella per il sistema operativo ospite.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 05-06-2007, 14:34   #11
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
Quote:
Originariamente inviato da cionci Guarda i messaggi
Fagli cambiare compilatore a scuola...perché usate un compilatore vecchio di 10 anni. Non è per caso un ambiente di sviluppo testuale che si chiama Turbo C++ ?

lo so che è vecchissimo ma che vuoi farci quello c'è.. e non credere che non abbiamo provato a chiedere di mettere almeno il dev-cpp..
ndakota è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
Tutti gli sconti Apple su Amazon: tornan...
Altro che entry-level: due smartwatch Am...
Roscosmos ha posticipato (ancora) il lan...
Isar Aerospace si prepara al secondo lan...
Tory Bruno è entrato in Blue Orig...
Fujifilm lancia la cartuccia per archivi...
Dreame H15 Mix: la soluzione 7-in-1 per ...
AirPods Pro 3 in forte sconto su Amazon:...
36 offerte Amazon, molte appena partite:...
2 caricatori multipli eccezionali: da 28...
OLED e 360 Hz a un prezzo senza preceden...
Roborock Q10 S5+ a un prezzo molto conve...
Upgrade PC a prezzo ridotto: le migliori...
Sono i 6 smartphone migliori su Amazon: ...
Google Pixel 9a a 361€, mai così ...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 13:06.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v