Используйте include guard, как предложено выше.
#ifndef _A_H_
#define _A_H_
#include B.h
class A {
B b;
}
#endif
Также вы можете использовать указатели на классы, а затем явно создавать и удалять классы.Включаемый файл без встроенного кода, который ссылается на члены класса и методы, должен знать только то, что он содержит классы, чтобы иметь член, который является указателем на этот класс.Я думаю, что это может быть формой инкапсуляции, но я не могу найти хороший пример.
class B;
class A {
B * b;
}