你那个函数写错了吧.应该是int A::aa()  { ... }
定义static int a是不会出错的,错误应该在别的地方.注意看错误提示什么,错在那一行.
另外,如果定义了静态变量的话,一定要在B.cpp开头,不属于任何函数的地方加上一句:
int B::m;
或者int B::m=0;
至于为什么这样作涉及到C++语言的内部机制,你可以不必深究,但是一定要有这一句.