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 Namespace
jest 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 Class
było, gdyby tak naprawdę nie zostały zdefiniowane w Namespace
? Czy w pewnym momencie spowoduje to błąd?
A::B
A
Namespace
jest 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ę.