надо узнать в каком порядке компилятор читает файлы проекта при компиляции.
в файле a1.h определен класс,
класс используется в файле a2.h, в котором в начале стоит #include a1.h,
но все равно этот класс не виден.
в a1.h инклудов способных привести к вызову a2.h я не вижу.