After having read CombineTag code, it seems this class is lacking a
destructor too. So memory will leak when two types of tags are present.
I'm not able to test this case though.
So again, adding a proper destructor is the solution:
~CombinedTag()
{
delete tag1;
delete tag2;
}