***
Когда первый класс включает в себя указатель на другой, а другой -- на первый, приходится пользоваться об'явлением класса "вперёд". А именно -- указать название класса вместо его настоящего об'явления (class CName1; ). Это должно работать как надо, но периодически возникают сбои, когда компилятор "не видит" второй класс. Обычно их удаётся победить, но сегодня я застрял.
Застрял до такой степени, что решил посмотреть, что выдаёт препроцессор. В настройках проекта можно задать "генерировать файлы препроцессора", что я и сделал. И о чудо -- модули по отдельности стали компилироваться, хотя раньше не компилировались! Это меня напрягло, поскольку мне не было смысла смотреть на результат препроцессора, если там всё хорошо. А когда всё плохо -- препроцессорных файлов нет.
Однако, полной сборки в таком режиме добиться не удалось. Компилятор сказал на этапе компоновки, что у него нет об'ектных файлов.
ОКАЗАЛОСЬ
что компиляция в режиме выдачи файлов после препроцессора не производится вовсе! После генерации i-файла компилятор с модулем больше ничего не делает. Поэтому и ошибок не возникало.
Я открыл один из препроцессорных файлов и стал искать упоминание нужного мне класса. Оно находилось, но слишком поздно. Я видел, что выше по тексту выше класс тоже упоминается. В общем в одно из наименований типа CName1 затесалась русская буква C. Когда я её исправил, всё заработало.