Uh huh. I noticed something else too (well, I guess it's the same thing): When passing an Upgrade to a function, it has to be a pointer to one.
Code:void addUpgrade(Upgrade upg) //:( It doesn't work. 2 bad, I didn't wanna mess with pointer-vectors...
{
upgrades.push_back(upg);
}