2009-09-02 7 views
19

Das kann ich eine Funktion in einem Namespace weiterleiten deklarieren, indem Sie:Gibt es eine kürzere Möglichkeit, eine Klasse in einem Namespace weiterzuleiten?

void myNamespace::doThing(); 

dem entspricht:

namespace myNamespace 
{ 
    void doThing(); 
} 

eine Klasse in einem Namespace deklarieren, um weiter:

namespace myNamespace 
{ 
    class myClass; 
} 

Gibt es einen kürzeren Weg dazu? Ich dachte etwas in der Form von:

class myNamespace::myClass; 
+1

Gespeichert mir Kopfschmerzen - Danke für die Frage! –

Antwort

27

Nein, aber mit ein wenig

Neuformatierung
namespace myNamespace { class myClass; } 

ist nicht viel schlechter als

class myNamespace::myClass; 
10

Ich wollte das gleiche schon einmal machen - es ist nicht erlaubt. Ein Namespacemitglied muss in einer namespace-body deklariert werden. Sie können nur mit dem Scope-Resolution-Operator "referenziert" werden.

Siehe 3.3.5 "Namespace-Bereich" im Standard.

Entitäten, die in einem Namespace-body deklariert sind, werden als Mitglieder des Namespace bezeichnet, und Namen, die durch diese Deklarationen in den deklarativen Bereich des Namespace eingeführt werden, werden als Membernamen des Namespaces bezeichnet.

und

Ein Namenselement kann auch nach dem auf den Namen seines Namensraum oder den Namen eines Namespace :: Bereichsauflösungsoperator (5.1) angewendet bezeichnet werden, die die Namespace-Mitglied nominiert in eine Verwendungsrichtlinie;

Verwandte Themen