Namespace in Header
-
Hallo,
mal kurz eine Frage. Ich benutze ein paar Variablen vom Typ
boost::accumulators::accumulator_set<...>in einer Klasse, diese Variablen stehen also so in der Header-Datei drin. Da das<...>hier mehrere Tags enthält (z.B. min, max, count, mean, variance), ist die Deklaration dieser blöden Variablen mehrere Zeilen lang, da alles mitboost::accumulatorsgeprefixt wird.Gibt es eine Möglichkeit, das kürzer zu schreiben?
-> innerhalb einer cpp-Datei hätte ich keine Angst vor
using namespace boost::accumulators;oder innerhalb von Funktionen auchnamespace bacc = boost::accumulators;. Aber wie mache ich das sinnvoll in einer Header-Datei innerhalb einer Klassendeklaration, sodass nicht plötzlich in Dateien, die diesen Header includen, auch der Namespace "geuset" wird? Oder sollte man da in den sauren Apfel beißen und alles ausschreiben?
-
nimm doch ein typedef
typedef boost::xyz<boost::abc, boost::xyz> bla; bla CreateBla(const bla& myBla);
-
Oder wenn die Klasse selbst in einem (eigenen) Namespace liegt, dann kannst du dort ja die "using"-Deklarationen platzieren (alternativ explizit "using boost::xyz" benutzen).
-
Wo ein typedef mir da Schreibarbeit spart und den Code übersichtlicher macht, ist mir nicht klar, das macht es doch noch unübersichtlicher und vor allem länger. Den Namen des Typs zu schreiben, ist doch gerade das furchtbar lange, sodass man kaum noch sieht, welche tags man denn nun wirklich in den features angegeben hat.
Die Klasse liegt aktuell nicht in einem eigenen Namespace, aber das sollte sie vermutlich sowieso... Das kann ich aber schnell nachholen und dann kann ich auch darin boost::accumulators usen. Danke.
-
achso, die Template Parameters sind nicht immer identisch? dann geht das mit dem typedef natürlich nciht, da habe ich dich wohl falsch verstanden