Это называется "предварительным объявлением", которое, по сути, является обещанием определить этот класс позже. Наличие предварительного объявления позволяет вам объявить указатели на HereIsMyClass
без необходимости включать в него заголовочный файл, но не фактические его объекты, потому что размер объекта HereIsMyClass
все еще неизвестен компилятору.
class HereIsMyClass;
class Foo
{
private:
HereIsMyClass *pointer; // works
HereIsMYClass object; // compiler error!
};
Форвардное объявление ничего не говорит компилятору о членах класса, поэтому вам все равно нужно включать полное определение класса (файл заголовка) всякий раз, когда вы его фактически используете, т.е. е. получить доступ к своим членам.