2009-09-02 9 views
19

mogę przekazać zadeklarować funkcję w obszarze nazw w ten sposób:Czy istnieje krótszy sposób przekazywania deklaracji klasy w przestrzeni nazw?

void myNamespace::doThing(); 

co jest równoważne:

namespace myNamespace 
{ 
    void doThing(); 
} 

Do przodu zadeklarować klasy w przestrzeni nazw:

namespace myNamespace 
{ 
    class myClass; 
} 

Czy istnieje krótszy sposób na zrobienie tego? Myślałem o czymś w rodzaju:

class myNamespace::myClass; 
+1

uratował mnie bóle głowy - dzięki za pytanie! –

Odpowiedz

27

Nie, jednak z trochę formatowania

namespace myNamespace { class myClass; } 

nie jest dużo gorsza niż

class myNamespace::myClass; 
10

Chciałem zrobić to samo wcześniej - nie jest dozwolone. Członek przestrzeni nazw musi zostać zadeklarowany jako namespace-body. Mogą być "przywoływane" tylko za pomocą operatora rozdzielczości zakresu.

Patrz 3.3.5 "Zakres przestrzeni nazw" w standardzie.

Podmioty zadeklarowane w przestrzeni nazw ciała mówi się, że członkowie nazw i nazwy wprowadzone przez tych deklaracji w regionie deklaratywnej z nazw są uważane za nazwy członkowskie nazw.

i

Członek nazw może być także określana po :: zakres operator rozdzielczości (5,1) jest stosowany w imię jego nazw lub nazwy przestrzeni nazw zgłaszających nazw o członku w dyrektywa użytkowa;

Powiązane problemy