20

I can forward declare a function in a namespace by doing this:

void myNamespace::doThing();

which is equivalent to:

namespace myNamespace
{
  void doThing();
}

To forward declare a class in a namespace:

namespace myNamespace
{
  class myClass;
}

Is there a shorter way to do this? I was thinking something along the lines of:

class myNamespace::myClass;
4

3 に答える 3

28

いいえ、ただし少し再フォーマットします

namespace myNamespace { class myClass; }

より悪くはない

class myNamespace::myClass;
于 2009-09-02T16:47:42.667 に答える
11

以前も同じことをしたかったのですが、許可されていません。名前空間のメンバーは で宣言する必要がありますnamespace-body。それらは、スコープ解決演算子を使用してのみ「参照」できます。

標準の 3.3.5「名前空間のスコープ」を参照してください。

名前空間本体で宣言されたエンティティは、名前空間のメンバーと呼ばれ、これらの宣言によって名前空間の宣言領域に導入された名前は、名前空間のメンバー名と呼ばれます。

名前空間メンバーは、その名前空間の名前または using ディレクティブでメンバーの名前空間を指定する名前空間の名前に :: スコープ解決演算子 (5.1) を適用した後に参照することもできます。

于 2009-09-02T16:23:18.177 に答える
3

私はそうは思わない。

于 2009-09-02T16:15:28.317 に答える