class Namespace::Class;
なぜこれをしなければならないのですか?:
namespace Namespace {
class Class;
}
VC ++ 8.0を使用すると、コンパイラーは以下を発行します。
エラーC2653:「名前空間」:クラスまたは名前空間名ではありません
ここでの問題は、コンパイラがNamespaceクラスと名前空間のどちらであるかを判別できないことだと思いますか?しかし、これは単なる前方宣言なので、なぜこれが問題になるのでしょうか。
いくつかの名前空間で定義されたクラスを前方宣言する別の方法はありますか?上記の構文は、私が名前空間を「再開」し、その定義を拡張しているように感じます。Class実際に定義されていない場合はどうなりNamespaceますか?これにより、ある時点でエラーが発生しますか?
A::Bあることをどのようにして知っているはずAですか?
Namespaceクラスと名前空間のどちらが重要であるのか、という質問には問題ありません。おそらく、構文をめぐる言語の炎上戦争が始まる可能性のヒントに近づかないでください。