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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Harb
1 / 1 / 0
Регистрация: 23.03.2014
Сообщений: 79
#1

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

24.03.2014, 16:49. Просмотров 175. Ответов 4
Метки нет (Все метки)

Здравствуйте!
Изучаю 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)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2014, 16:49     Запись class X;
Посмотрите здесь:

C++ Class
Class C++
C++ class Point
C++ Class ошибка в new
Class C++
Class MyInt C++
friend class C++
C++ class C++
class C++
class bookshop C++
C++ Class и char
Class C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
641 / 562 / 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
6859 / 4070 / 927
Регистрация: 30.01.2014
Сообщений: 6,869
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;
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru