Class1 не должен включать Class2.
Когда у вас есть взаимозависимость (которую вы не делаете - вы просто не могли бы включить 2 в 1), вы обычно можете решить ее с помощью предварительных объявленийвместо включений.
Например, предположим, что Class1 выглядел следующим образом
#include "Class2.h"
namespace Class1_namespace
{
class Class1
{
Class2* class2;
};
}
Если вы думаете, что вам нужно включить, вы можете вместо этого сделать это:
class Class2;
namespace Class1_namespace
{
class Class1
{
Class2* class2;
};
}
нарушить взаимное включение.