Dlaczego nie mogę przekazywać deklaracji klasy w przestrzeni nazw za pomocą dwukropków?

class Namespace::Class;

Dlaczego muszę to zrobić ?:

namespace Namespace {
    class Class;
}

Korzystając z VC ++ 8.0, kompilator wydaje:

błąd C2653: „Przestrzeń nazw”: nie jest nazwą klasy ani przestrzeni nazw

Zakładam, że problem polega na tym, że kompilator nie może stwierdzić, czyNamespace to jest klasa lub przestrzeń nazw? Ale dlaczego to ma znaczenie, ponieważ jest to tylko deklaracja?

Czy istnieje inny sposób przekazywania deklaracji klasy zdefiniowanej w jakiejś przestrzeni nazw? Powyższa składnia ma na celu „ponowne otwarcie” przestrzeni nazw i rozszerzenie jej definicji. Co jeśliClass w rzeczywistości nie zostały zdefiniowaneNamespace? Czy spowodowałoby to w pewnym momencie błąd?

questionAnswers(5)

yourAnswerToTheQuestion