Hi!
Hab wieder mal ein c++-Problem. Ev. weiß ja jemand von den erfahrenen Programmierern hier Rat.
Ich habe folgendes im h-File deklariert:
struct tEvent
{
std::string title;
bool isRecording;
std::string channelName;
int channelNumber;
time_t start;
int priority;
int tEvent::operator< (tEvent b) const
{
int r = start - b.start;
return r == 0 ? b.priority - priority : r;
};
};
typedef std::vector<tEvent> tEvents;
Alles anzeigen
und irgendwo im c-File kommt dann folgender Code:
mEvents.clear();
for (cTimer *tim = Timers.First(); tim != NULL; tim = Timers.Next(tim))
{
if (tim->HasFlags(tfActive))
{
tEvent ev;
ev.title = tim->File();
ev.isRecording = tim->Recording();
ev.channelName = tim->Channel()->Name();
ev.channelNumber = tim->Channel()->Number();
ev.start = tim->StartTime();
ev.priority = tim->Priority();
mEvents.push_back(ev);
}
}
std::sort(mEvents.begin(), mEvents.end());
Alles anzeigen
Wenn ich sort weglasse funzt alles, aber sobald ich die sort-Zeile aktiviere stürzt das Programm ab. Was kann denn da der Fehler sein, denn kompilieren tut es ohne Warnung?
Stimmt was am Operator nicht? Hab eigentlich noch nie einen Operator overloaded und bin auch nicht so vertraut mit der STL, aber ich sehe in dem Aufruf wirklich keinen Fehler und den Vector sollte das dann ja eigentlich problemfrei sortieren können oder?
BTW, kann man eigentlich den mEvents.push_back(ev)-Aufruf eleganter (in einem Schwung) machen? Also ohne dass ich zuerst ev erstelle?
Gruß und Danke scho mal,
Brougs78