2009-09-02 17 views
19

posso inoltro dichiarare una funzione in uno spazio dei nomi in questo modo:C'è un modo più breve per inoltrare una classe in uno spazio dei nomi?

void myNamespace::doThing(); 

che è equivalente a:

namespace myNamespace 
{ 
    void doThing(); 
} 

Per inoltrare dichiarare una classe in uno spazio dei nomi:

namespace myNamespace 
{ 
    class myClass; 
} 

C'è un modo più breve per farlo? Stavo pensando qualcosa sulla falsariga di:

class myNamespace::myClass; 
+1

Salvato me mal di testa - grazie per la domanda! –

risposta

27

No, ma con un po 'di riformattazione

namespace myNamespace { class myClass; } 

non è molto peggio di

class myNamespace::myClass; 
2

Io non la penso così.

10

Ho voluto fare la stessa cosa prima - non è permesso. Un membro dello spazio dei nomi deve essere dichiarato in un namespace-body. Possono essere "riferiti" solo utilizzando l'operatore di risoluzione dell'ambito.

Vedere 3.3.5 "Ambito di spazio dei nomi" nello standard.

Le entità dichiarate in un corpo del namespace sono dette membri del namespace, e i nomi introdotti da queste dichiarazioni nella regione dichiarativa del namespace sono detti membri del namespace.

e

Un membro dello spazio dei nomi possono anche essere di cui dopo il :: operatore di risoluzione dell'ambito (5.1) applicato al nome del suo spazio dei nomi o il nome di un namespace, che nomina dello spazio dei nomi del membro in una direttiva using;

Problemi correlati