一个类作为另一个类的静态成员变量的有关问题*

一个类作为另一个类的静态成员变量的问题****
比如:
class   A
{
  public:
        A(int   aa=0)
      {
          a=aa;
        }
        void   f()
        {  
          cout < < "hello " < <endl;
        }
  private:
      int   a;
};

class   B
{
  public:
    static   void   function();
    static   A   a;
};

void   B::function()
{  
  a.f();
}
int   main()
{
  B::function();
return   0;
}

这样编译没问题,但是连接就出错了,是不是静态变量a没有初始化的原因呢?那这个a又怎么初始化呢?
请大虾指点指点

------解决方案--------------------
class B
{
public:
static void function();
static A a; //这里不分配内存
};

A B::a; // 类内声明 类外定义

------解决方案--------------------
同意david2083