Я подозреваю, что у вас есть дефектный конструктор копирования и / или реализация оператора присваивания.
Если строка
mymap.insert(std::make_pair(mystring,myobject));
вылетает, вполне вероятно, что какой-то метод, который выполняется на myobject, вызывает проблему. В этой строке кода наиболее интересными функциями являются конструктор копирования и / или оператор присваивания.
Вы говорите, что уже добавили оператор присваивания (который вызывает конструктор копирования), но это звучит странно. Обычно все наоборот. конструктор копирования распределяет ресурсы (т.е. память) по мере необходимости, а затем вызывает оператор присваивания.
ОБНОВЛЕНИЕ: После прочтения вашего комментария, вот как должен выглядеть ваш конструктор копирования:
Filter::Filter( const Filter &rhs ) {
// Apparently no resource acquisition like memory allocation is necessary,
// so just assign the rhs value.
*this = rhs;
}
А вот и оператор присваивания. Обратите внимание, как он просто копирует значения. Скорее всего, вам вообще не нужна реализация оператора присваивания (или конструктора копирования), потому что синтезированный компилятором код подходит для вашего использования.
Filter &Filter::operator=( const Filter &rhs ) {
SrcNET = f.SrcNET;
SrcPort = f.SrcPort;
DstNET = f.DstNET;
FlowLabel = f.FlowLabel;
return *this;
}