View Full Version : [c++] NAMESPACE? come si usa?
Barbalbero
14-04-2009, 10:33
ho un file.h
#include...
.....
BEGIN_NAMESPACE_PROVA
....
class classe_prova{ ... }
....
END_NAMESPACE_PROVA
....
ho un file.cpp
#include <file.h>
...
int main(){
...
return 0;
}
Nel main del file.cpp vorrei usare classe_prova. Come posso fare?
Da quanto ho capito devo usare ancora BEGIN_NAMESPACE_PROVA anche nel file.cpp...
Qualcuno sa spiegarmi come funziona questo BEGIN_NAMESPACE? come si chiama? è una macro? Dove trovo documentazione a riguardo?
Non si usano così i namespace in C++. Quel BEGIN_NAMESPACE_PROVA magari è una macro che apre il namespace prova.
Barbalbero
15-04-2009, 10:00
boh... io fatto delle prove...
se io scrivo
file.h:
BEGIN_NAMESPACE_PROVA
void mia_funz(void){...}
END_NAMESPACE_PROVA
file.cpp
#include "file.h"
BEGIN_NAMESPACE_PROVA
int main(){
mia_funz();
}
END_NAMESPACE_PROVA
non mi fa errore di scope. Se invece ometto BEGIN_NAMESPACE_PROVA nel file.cpp invece dice che mia_funz non è dichiarata.
Comunque ora ho scoperto che esiste anche USING NAMESPACE_PROVA e sembra essere la cosa più corretta e pare funzionare
Ripeto BEGIN_NAMESPACE_PROVA deve essere una qualche macro definita altrove, non esiste una sintassi del genere in C++.
I namespace si usano così:
namspace prova
{
int f(int i) { };
}
using prova::f;
f(1234);
||ElChE||88
15-04-2009, 10:55
Mi ricorda questo:
http://pastebin.com/f262caa56
:asd:
Comunque ora ho scoperto che esiste anche USING NAMESPACE_PROVA [...]
Oddio mi sembra davvero di essere nel pastebin grottesco di ||ElChE||88 :eek:
In ogni caso, Barbalbero, in C++ il modo corretto di risolvere un namespace è mediante l'operatore "quattro punti ::".
Nel tuo caso tralaltro si pone il problema del vero nome del namespace, visto che non abbiamo informazioni sul se si chiama Prova, prova, PROVA...
Ah, se non l'avessi ancora capito, questa sintassi non fa parte del C++ ma è stata ideata e realizzata, tramite opportune direttive al preprocessore, da chi ha scritto quegli header.
L'unico motivo che mi viene in mente è di rendere il proprio codice brutto, incomprensibile e molto difficile da utilizzare per altri :fagiano:
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.