I don't see what keeping two lists (pass/fail) will buy you other than added complexity.
Even if insert worked the way you wanted it to, you would still be leaking memory like a sieve. As it is, every allocation you make is leaked. If it worked correctly only half the allocations you make would be leaked. Well, that is until we come to the non-existent destructor that doesn't free any memory. I guess it all gets leaked anyway!
You never modify either the Pass or Fail members of your class so, of course, your print function reflects that.