Nie możesz. Standardowo oferuje kilka mniej dobre alternatywy:
// The stuff you want to use.
namespace foo { namespace bar {
class Frob {};
} }
Teraz z najmniej zanieczyszczających do najbardziej zanieczyszczających.
typedef
umożliwia napisać, że alias w private
sekcji definicji klasy:
// I)
class Schwarzschild {
typedef foo::bar::Frob FbFrob;
public: Schwarzschild() : a(FbFrob()), b(FbFrob()) {}
private: FbFrob a,b,c;
};
Ale można też użyć go unit-globalnie, ale z szansą na jego nazwę:
// II)
class Schwarzschild {
public: Schwarzschild();
private: foo::bar::Frob a,b,c;
};
// cxx-file
typedef foo::bar::Frob FbFrob;
Scharzschild::Scharzschild() : a(FbFrob()) {}
można również nazw alias:
// III)
namespace fb = foo::bar;
class Planck {
public: Planck() : a(fb::Frob()), b(fb::Frob()) {}
private: fb::Frob a,b,c;
};
Albo można wybrać wiśnia symboli z innych nazw, z wadą, że Frob
może zderzyć się z innym Frob
w swojej jednostce tłumaczenia:
// IV)
using foo::bar::Frob;
class Mach {
public: Mach() : a(Frob()), b(Frob()) {}
private: Frob a,b,c;
};
Tylko dla kompletności wywodu, najbardziej zanieczyszczające rozwiązaniem jest using namespace
.
// V)
using namespace foo::bar;
class Newton {
public: Newton() : a(Frob()), b(Frob()) {}
private: Frob a,b,c;
};
Należy zauważyć, że III, IV i V można również ograniczyć do pliku cxx, jak w przykładzie Schwarzschilda.
Jaki to jest język? Proszę odpowiednio oznaczyć. –
Przepraszam Tomasz, i dziękuję za komentarz. Edytowane w celu dodania tagu C++. – Ant
Aby uniknąć nieporozumień, należy go nazwać "ctor-initializer", ponieważ element gramatyki C++ "initializer-list" jest czymś innym (część między '{}' dla inicjatorów agregujących). A co jest tak złego w "zanieczyszczaniu" reszty pliku przy użyciu? To jest twój plik .cxx, a nie nagłówek, więc powinno być dobrze. Inną opcją byłoby zrobienie 'using nsConstants :: ONE;', ale to, czego chcesz, nie jest możliwe. – PlasmaHH