Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запутался с файлами заголовков, Не могу составить схему. 
:(
    Опции темы
SAV
Дата 24.5.2002, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.3.2002
Где: Moscow

Репутация: нет
Всего: нет



GREETINGS!

Господа, подскажите, пожалуйста. Начну сначала - у диалога есть файл .H и .CPP . Отдельно у меня есть файл заголовка X.H, где описана некоторая структура. И вот - диалог, использующий Х.Н вызывает другой диалог, который тоже использует Х.Н, но уже в своем файле заголовка. И меня выкидывают в Х.Н и говорят, что тип уже определен. Нельзя ли это как-нибудь обойти или нужно продумывать новую схему работы?

Спасибо.

Удачи!

SAV
PM MAIL   Вверх
Nastya
Дата 24.5.2002, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



Попробуй директиву кампилятора #if или #ifdef


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
SAV
Дата 27.5.2002, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.3.2002
Где: Moscow

Репутация: нет
Всего: нет



GREETINGS!

Nastya, спасибо за совет, но такой способ не получается или я чего-то недопонял. У меня один .CPP включает два .H, но каждый из этих .H включает один и тот же файл X.H, а как это предотвратить с помощью тех директив, я не понимаю.

Все равно, спасиобо.

Удачи!
PM MAIL   Вверх
Nastya
Дата 27.5.2002, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 5
Всего: 44



Как я себе это представляю:
В том файле X.H у тебя что?
Вот все те определения которые у тебя "уже определены" запихиваешь внутрь #ifdef

Мне кажеться так! :lookaround


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Vyacheslav
Дата 27.5.2002, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 9
Всего: 59



Имелось в виду следущее. Возьми за правило обрамлять содержимое h-файла в следующие директивы
#ifndef FileH
#define FileH
// содержимое файла File.H
//здесь под File - имется имя конкретного файла.
#endif

Смысл в следующем. Если File.h ни разу  не встречался(FileH  не определено), препроцессор определит FileH ( директива #define FileH) и включит содержимое File.H для последующей компиляции. При последующих вхождениях директива  #ifndef FileH - даст результат false и все содержимое от
#ifndef FileH до #endif будет проигнорировано. Этим ты гарантируешь однократное включение содержимого h-файл  в процесс компиляции вне зависимости от того, сколько раз ты его включал.
Вторым способом избежать повтороного включения является  предварительное объявление c переносом хидера из интерфейсного файла(*.h) в файл реализации(*.cpp) . Т.е. вместо
Файл Class2.h

#include "Class1.h"
class Class2
{
...
   Class1* ggg;  
...
};

делаешь следующее
Файл Class2.h
class Class1;
class Class2
{
...
   Class1* ggg;
...  
};
Файл Class2.cpp
#include "Class2.h"
#include "Class1.h"
....


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
SAV
Дата 28.5.2002, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.3.2002
Где: Moscow

Репутация: нет
Всего: нет



GREETINGS!

Большое спасибо Вам Nastya и Вам, Вячеслав! Наконец то понял.

Еще раз спасибо. Удачи!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0859 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.