Использовать предварительную декларацию.
class Class2;
class Class1
{
Class2* Class2_ptr;
};
class Class2
{
Class1* Class1_ptr;
}
Поскольку методы в Class1 будут зависеть от фактического определения Class2, определения методов должны появляться после объявления Class2, так как вы не можете использовать методы только из предварительного объявления.
С другой стороны, такая жесткая связь обычно свидетельствует о плохой конструкции.