Class1 should not include Class2.
If you have a mutual dependency (which you cannot - you can simply not include 2 in 1), you can usually solve it using forward declarations instead of inclusions.
For example, let's say that Class1 looked like this:
#include "Class2.h"
namespace Class1_namespace
{
class Class1
{
Class2* class2;
};
}
, include, :
class Class2;
namespace Class1_namespace
{
class Class1
{
Class2* class2;
};
}
.