class Namespace::Class;
Dlaczego muszę to zrobić ?:
namespace Namespace {
class Class;
}
Używając VC ++ 8.0, kompilator problemy:
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ć, czy Namespacejest to klasa czy przestrzeń nazw? Ale dlaczego to ma znaczenie, skoro jest to tylko deklaracja wyprzedzająca?
Czy istnieje inny sposób zadeklarowania klasy zdefiniowanej w jakiejś przestrzeni nazw? Powyższa składnia sprawia wrażenie, że „ponownie otwieram” przestrzeń nazw i rozszerzam jej definicję. A co by Classbyło, gdyby tak naprawdę nie zostały zdefiniowane w Namespace? Czy w pewnym momencie spowoduje to błąd?
A::BA
Namespacejest to klasa czy przestrzeń nazw. Po prostu nie zbliżaj się do śladu możliwości rozpoczęcia wojny o język o składnię.