Split-Funktion für date_period von boost


  • Gesperrt

    Hallo,

    Habe date_period in http://www.boost.org/doc/libs/1_58_0/doc/html/date_time/gregorian.html#date_time.gregorian.date_period.

    Die Bibliothek bietet keine Split-Funktion an, um ein date_period bei einem bestimmten Datum in zwei date_period zu splitten. 😞

    Dafür habe ich jetzt selbst eine Funktion geschrieben, frage mich aber, ob man es nicht schlauer machen kann?

    void Split_Period(const date_period& period, const date split_date, date_period& part0, date_period& part1) //Kann man z.B. diese Zeile auch schlauer schreiben?
    {
    	part0 = date_period(period.begin(), split_date);
    	part1 = date_period(split_date, period.end());
    }
    

    Ich brauche das, wenn ein date_period sich über zwei oder mehr Jahren erstreckt.

    Ein Problem ist, dass für date_period kein Default-Konstruktor vorhanden ist. Und als Pointer will ich date_period nicht übergeben, da ich dann das Problem mit new und delete habe.

    Glaube ein Copy-Konstruktor ist bei date_period vorhanden.

    void Period::Build_Bars()
    {
    	date_period part1 = period; //Geht, weil glaube ich ein Copy-Constructor vorhanden ist.
    	//date_period part1; //Geht nicht, da kein Default-Konstruktor
    
    	while(part1.begin().year() < part1.last().year())
    	{
    		date_period part0 = period; //Finde ich nicht so schlau.
    		date_period current_split = part1;
    		Split_Period(current_split, date(current_split.begin().year() + 1, 1, 1), part0, part1);
    		bars.push_back(Period_Bar(part0));
    	}
    	bars.push_back(Period_Bar(part1));
    }
    

    Wollte fragen, ob jemand eine Idee hat, wie man eine Split-Funktion möglichst schlau schreiben könnte und wie ich date_period der Funktion am besten übergeben soll?


  • Gesperrt

    ---


Anmelden zum Antworten