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);
}