When you have a class definition with virtual functions, g++ sticks the virtual function table in the translation unit that defines the first non-pure non-inline virtual function. If that definition is missing, g++ might not generate the vtbl. So you may have something like that in your code.
class Foo{public: virtual void blah(); // The first virtual function declared but not defined. virtual ~Foo();};Foo::~Foo() {} // Defined, but not first.
Edit - viewing your code, I see you have a function body for a GL_Window::Init function, but do you have one for gs_MainMenu::Initialize ? (the first non-inline, non-pure virtual function in c_GameState)
Edit2 - By the way, your base class needs a virtual destructor.
[Edited by - Fruny on July 22, 2004 4:21:19 PM]
"Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." — Brian W. Kernighan