It's odd that the compile script didn't work. I had no problem with it. What version of g++ are you using?
The vector is in the Person class (fwd.h and Person.cpp). It holds pointers to all the Endowments that Person has received. When Person::giveEndowment(Endowment* e) is called, e has an actual value in memory. But, when that method calls Person::getEndowment(Endowment* e), e is suddenly a NULL pointer. Sorry, I should've explained that earlier.
The executable should print something like the following:
King Sylvarresta -> Raj Ahten: WIT (50)
King Sylvarresta: {BRAWN:50, STAMINA:50, METABOLISM:50, GRACE:50, GLAMOUR:50, WIT:0, SIGHT:50, HEARING:50, TOUCH:50, TASTE:50, SMELL:50}
Raj Ahten: {BRAWN:90, STAMINA:90, METABOLISM:90, GRACE:90, GLAMOUR:90, WIT:90, SIGHT:90, HEARING:90, TOUCH:90, TASTE:90, SMELL:90}
0x80020438
0
King Sylvarresta: {BRAWN:50, STAMINA:50, METABOLISM:50, GRACE:50, GLAMOUR:50, WIT:0, SIGHT:50, HEARING:50, TOUCH:50, TASTE:50, SMELL:50}
Raj Ahten: {BRAWN:90, STAMINA:90, METABOLISM:90, GRACE:90, GLAMOUR:90, WIT:90, SIGHT:90, HEARING:90, TOUCH:90, TASTE:90, SMELL:90}
Those two hex values are the values of the Endowment pointer in Person::giveEndowment(Endowment* e) and Person::getEndowment(Endowment* e), respectively.
EDIT: Armokdamnit. I re-wrote the project in Java and it works perfectly. You're behind this somehow, Stargrasper.