To start off I have a header file with a class that holds static data and static data members. Something like this:

class ImAClass
static std::vector<A*> listOfA_;
ImAClass(void); //non-default constructor
static std::vector<A*>* GetListOfA(void) { return &listOfA_; }

And another class that holds a static version of this class:

class IHoldThings
static ImAClass noReallyImAClass_;

Why is it that I get no errors when I define this outside of both classes?:

std::vector<A*> ImAClass::listOfA_; //seemingly does nothing? maybe??

But I get an unresolved external symbol error when I omit it?

Does listOfA_ exist before the compiler sees this call? If that is true, should I also construct the static class in IHoldThings in the same fashion, or is ImAClass's constructor enough for this purpose? Thanks in advance.