Определение класса без реализации

111
22 мая 2021, 00:00

Что означает такая запись: class MyClass; ? объявление существующего класса без реализации

Answer 1

Для компилятора это знак того, что класс полностью объявлен в другом месте этого проекта (например, в соседнем файле).

Так делают, чтобы избежать взаимного включения. Например, у Вас есть файл X.h в котором объявлен класс X и файл Y.h, в котором объявлен класс Y. При этом Вам зачем-то понадобилось использовать класс X в классе Y и наоборот (например, объекты одного класса являются свойствами другого). Тогда, если включить один файл в другой с помощью #include, и со вторым сделать то же самое, компилятор засыплет Вас ошибками, вызванными взаимным включением. И вот именно в такой ситуации используют представленное Вами объявление. Например в классе X, чтобы объявить свойство, являющееся объектом класса Y, можно не писать #include"Y.h", а написать лишь class Y;. Это даст понять компилятору, что класс Y объявлен где-то вне этого файла, и при сборке он обязательно его найдёт.

Возможно это не единственный пример использования такой конструкции. Я просто рассказал то, с чем сам сталкивался на практике.

READ ALSO
Выравнивание заголовков разных блоков

Выравнивание заголовков разных блоков

Как сделать,чтобы при увеличении размера заголовка, текст не выходил за красную зону снизу и оставался на одной линии с другими заголовками...

131
Rigidbody двигает объект вниз при положительной силе

Rigidbody двигает объект вниз при положительной силе

Рассчитываю силу по формуле Масса * ускорение, при положительном ускорение меньше чем 10 объект идет вниз,при ускорение 10 и больше объект только...

89
Visual Studio | Групповая разработка ПО [закрыт]

Visual Studio | Групповая разработка ПО [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

128