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 mit boost::accumulators geprefixt 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 auch namespace 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


Anmelden zum Antworten