My program always ends up crashing, the problem is definitely with this line in addItem:
Setp[numItems]= item;
If I try to do this *Setp[numItems]= item; the program does not compile.
This was a good one and I see this all the time in the industry.
In line of code 7 of Set.cpp, you declared Element * Setp. What it will happen is it will allocate 20 Element objects and assign to the local Setp variable. That is, the Set::Setp variable is never set since you declared a local one.
All you need to do is remove Element * and you're good to go :-)