Название: Обьявление классов Отправлено: lokoArt от Январь 16, 2010, 09:36 ПРивет всем. Подскажите пожайлуста как правильно сделать.
У меня есть 2 класса, вот их коды class1.h Код: class Class1{ class1.cpp Код: #include "class1.h" class2.h Код: #include "class1.h" class2.cpp Код: #include "class2.h" Нужно чтобы, в class1 можно было создавать объект класса class2. Название: Re: Обьявление классов Отправлено: BRE от Январь 16, 2010, 10:20 Воспользуйся поиском по форуму на тему: Forward declaration
Название: Re: Обьявление классов Отправлено: ilot от Январь 16, 2010, 10:55 Цитировать Нужно чтобы, в class1 можно было создавать объект класса class2. 1. в class1.h включи заголовок class2.h2. в начало class1.h добавь объявление: Код: class Class2; Код: class Class1; Название: Re: Обьявление классов Отправлено: Dendy от Январь 16, 2010, 11:25 Где-то явно нарушена логика, ибо судя по коду обекты будут бесконечно создавать друг друга в конструкторах.
Название: Re: Обьявление классов Отправлено: ilot от Январь 16, 2010, 11:47 Где-то явно нарушена логика, ибо судя по коду обекты будут бесконечно создавать друг друга в конструкторах. действительно :)хотя возможно, что в class1.h опечатка и имелся ввиду указатель на Class2. В таком случае все будет нормально Название: Re: Обьявление классов Отправлено: BlackTass от Январь 16, 2010, 12:45 1. в class1.h включи заголовок class2.h наверно имелось в виду в class1.cpp добавить #include "class2.h" и также для для второго классаНазвание: Re: Обьявление классов Отправлено: lokoArt от Январь 16, 2010, 12:52 Где-то явно нарушена логика, ибо судя по коду обекты будут бесконечно создавать друг друга в конструкторах. ой действительно... я не заметил... Ну всё таки я разобрался с Forward declaration)) всем спасибо Название: Re: Обьявление классов Отправлено: zenden от Январь 16, 2010, 13:34 Как создавать классы / хедеры так, чтобы программа компилировалась независимо от порядка директив #include ?
Название: Re: Обьявление классов Отправлено: ilot от Январь 16, 2010, 13:59 Как создавать классы / хедеры так, чтобы программа компилировалась независимо от порядка директив #include ? 1. следить, чтобы хедеры содержали только объявления без определений (исключения - inline-функции, статические функции/переменные и константы).2. использовать флаги включения: Код: #ifndef MY_HEADER_H - в начале хедера подключить заголовки от которых он зависит; - для разрешения циклических ссылок внутри хереда используются forward declaration; Если я ничего не забыл, то этого должно быть достаточно, чтобы не обращать внимания на порядок включения заголовков в cpp-файлы. Название: Re: Обьявление классов Отправлено: BlackTass от Январь 16, 2010, 15:51 3. следить, чтобы все используемые в хедере типы данных были предварительно объявлены: Лучше оставлять как можно меньше инклюдов в хедерах. Только то для чего нужны внутренности. Все остальное через форвард и инклюдить в цпп- в начале хедера подключить заголовки от которых он зависит; - для разрешения циклических ссылок внутри хереда используются forward declaration; Название: Re: Обьявление классов Отправлено: niXman от Январь 16, 2010, 17:57 Код ? |