I've been having a linker error in one of my programs and I dont understand. It says there's an undefined reference with one of my static instance variables yet it is clearly listed in both the class header and the implementation of the functions. Here is a sample code that resembles the code I'm using.

The code for foo is seperate because it will be a seperate header implementation file when it is really used.
Code:
#include <iostream>
using namespace std;

class foo
{
        private:
                static int death;

        public:
                static void init();

                void print();
};

void foo::init()
{
        death = -5;

}

void foo::print()
{
        cout << death << endl;
}

int main()
{
        foo myFoo;

        foo::init();

        for(int i = 0; i < 10; i++ )
                myFoo.print();

        return 0;
}
When I try to compile it I get the following error:

test.o:test.cpp.text+0x105): undefined reference to `foo::death'
test.o:test.cpp.text+0x117): undefined reference to `foo::death'

Also when I do the following objdump: (objdump -t test.o | grep death)

I find [ 24](sec 0)(fl 0x00)(ty 0)(scl 2) (nx 0) 0x00000000 __ZN3foo5deathE in the symbol table which leads me to believe that the linker is being dumb. Of course it's probably something I did, but from example code on the web of using static instance variables I shouldn't be having this problem. Can anyone help?

Thanks