This is a job for separate header and implementation files and forward declarations (pseudo code follows):
// parent.h
class Parent {};
// child1.h
class Child2; // forward declaration
class Child1 : public Parent
{
Child1& operator=(cosnt Child2& rhs);
};
// child2.h
class Child1; // forward declaration
class Child2 : public Parent
{
Child2& operator=(cosnt Child1& rhs);
};
// child1.cpp
#include "child1.h"
#include "child2.h"
Child1& Child1::operator=(cosnt Child2& rhs)
{
// ...
};
// child2.cpp
#include "child2.h"
#include "child1.h"
Child2& Child2::operator=(cosnt Child1& rhs)
{
// ...
};