Как указал другой автор, можно сделать, сделав один из классов ответственным за конструирование другого и передав себя в конструктор для другого объекта.
Однако это создает потенциальные проблемы, если вы хотите, чтобы один экземпляр первого класса соответствовал одному экземпляру второго класса (что, как вам кажется). Другой объект может потенциально передать существующую ссылку на первый класс в конструктор для второго класса, что позволяет создать недопустимую ситуацию (экземпляр второго класса теперь имеет ссылку на экземпляр первого класса, который ссылается на другой экземпляр второго класса).
Дополнительные потенциальные проблемы возникают, если учесть, что конструктор второго класса не может ссылаться на неинициализированные члены первого класса.
Мое предложение заключается в том, что если два класса настолько взаимосвязаны, что вы хотите, чтобы у каждого из них были окончательные ссылки на другой, просто делает их одним и тем же классом . Тогда у вас всегда есть окончательная ссылка на другой объект: this
.