Вы объявили статический член, но не определили его.
Кроме того, вы устанавливаете его значение всякий раз, когда создается любой экземпляр A, тогда как на самом деле вы хотите, чтобы он был инициализирован только один раз.
class B;
class A {
private:
static B* obj;
};
B* A::obj = NULL;
Поскольку определение вашего класса A, вероятно, находится в заголовочном файле, вы должны убедиться, что определение obj (которое я добавил) содержится в одном (и только одном) файле .cpp. Это связано с тем, что он должен появляться только один раз в вашем скомпилированном проекте, но содержимое файла заголовка может быть #included
несколько раз.