Форум программистов, компьютерный форум CyberForum.ru

Запись class X; - C++

Восстановить пароль Регистрация
 
Harb
1 / 1 / 0
Регистрация: 23.03.2014
Сообщений: 79
24.03.2014, 16:49     Запись class X; #1
Здравствуйте!
Изучаю MFC по книге. Использую Visual Studio 2008.

Есть файлы X.h и X.cpp, в которых содержится описание класса X. Есть файлы Y.h и Y.cpp, в которых содержится описание класса Y. Описание класса Y содержит в себе методы с формальными переменными типа X.

Если я пишу в Y.h:
C++
1
#include X.h
то получаю ошибку C2370.

Вместо этого, в книге предлагается написать так:

C++
1
class X;
тогда все работает. Можете объяснить смысл данной записи?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
24.03.2014, 16:51     Запись class X; #2
Цитата Сообщение от Harb Посмотреть сообщение
тогда все работает. Можете объяснить смысл данной записи?
сообщаем о том, что есть такой класс X, реализация которого будет когда либо приведена
Harb
1 / 1 / 0
Регистрация: 23.03.2014
Сообщений: 79
24.03.2014, 23:06  [ТС]     Запись class X; #3
Спасибо!
Как-то запутанно все получается. Пусть у меня есть A,B,C.... классы, которые определены соответственно в A.h,B.h,C.h... и A.cpp,B.cpp,C.cpp... и есть некоторый файл MAIN.cpp, в котором используются все эти классы. Получается в MAIN.cpp, я должен буду написать:
C++
1
2
3
4
class A;
class B;
class C;
...
Почему я не могу использовать #include?
DrOffset
6461 / 3835 / 885
Регистрация: 30.01.2014
Сообщений: 6,630
24.03.2014, 23:28     Запись class X; #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Harb Посмотреть сообщение
Почему я не могу использовать #include?
Можешь.
Предварительное объявление класса используется для
1) Минимизации зависимостей, позволяя не включать заголовочный файл там где это не требуется. В целом это позволяет сократить время компиляции.
2) Разрешения циклических зависимостей классов в заголовочных файлах.
Harb
1 / 1 / 0
Регистрация: 23.03.2014
Сообщений: 79
25.03.2014, 00:54  [ТС]     Запись class X; #5
DrOffset, спасибо!
Вроде теперь становится понятнее, дальше уже буду сам разбираться, по литературе.
Yandex
Объявления
25.03.2014, 00:54     Запись class X;
Ответ Создать тему
Опции темы

Текущее время: 14:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru