I suspect that you have a buggy copy constructor and/or assignment operator implementation.
If the line
mymap.insert(std::make_pair(mystring,myobject));
crashes, it's pretty likely that some method which is executed on 'myobject' causes the problem. In this code line, the most interesting functions are the copy constructor and/or the assignment operator.
You say that you already added an assignment operator (which calls the copy constructor), but that sounds strange. Usually it's exactly the other way round; the copy constructor allocates resources (i.e. memory) as needed and then calls the assignment operator.
UPDATE: After reading your comment, here's how your copy constructor should look like:
Filter::Filter( const Filter &rhs ) {
// Apparently no resource acquisition like memory allocation is necessary,
// so just assign the rhs value.
*this = rhs;
}
And here's the assignment operator. Note how it just copies over the values. Chances are that you don't need an assignment operator (or copy constructor) implementation at all because the compiler-synthesized code is fine for your uses.
Filter &Filter::operator=( const Filter &rhs ) {
SrcNET = f.SrcNET;
SrcPort = f.SrcPort;
DstNET = f.DstNET;
FlowLabel = f.FlowLabel;
return *this;
}