2009-09-02 24 views
19

我可以做這個轉發命名空間中的一個函數聲明:有沒有更簡單的方法來轉發在名稱空間中聲明一個類?

void myNamespace::doThing(); 

這相當於:

namespace myNamespace 
{ 
    void doThing(); 
} 

要轉發命名空間中的聲明一個類:

namespace myNamespace 
{ 
    class myClass; 
} 

有沒有更簡單的方法來做到這一點?我在想的是:

class myNamespace::myClass; 
+1

救了我頭疼 - 謝謝了問題! – 2011-12-12 23:47:58

回答

27

沒有,但是有一點重新格式化

namespace myNamespace { class myClass; } 

沒有太大差於

class myNamespace::myClass; 
10

我以前想做同樣的事情 - 這是不允許的。命名空間成員必須在namespace-body中聲明。它們只能使用範圍解析運算符「引用」。

請參閱標準中的3.3.5「命名空間範圍」。在名稱空間體中聲明

實體被說成是命名空間的成員,並且通過這些聲明引入命名空間聲明性區域名稱被說成是命名空間的成員名稱。

命名空間構件也可以在::範圍解析運算符(5.1)施加到其命名空間的名稱或提名構件的命名空間在一個命名空間的名稱之後稱爲使用指令;

相關問題