Статические переменные должны быть размещены вне класса. Добавьте эту строку за пределы класса B:
int B::b;
Представьте, что статические переменные объявлены с ключевым словом extern
. Их еще нужно где-то разместить. Это означает, что распределение никогда не должно быть в заголовочном файле!