![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
MsLive |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Здравствуйте!
Недавно возник такой вопрос: Как мне включить класс в проект, который использует неопределенный тип данных(и таких данных много) например:
в другом файле
Любая попытка включить этот класс без #include не была успешной(компилятор писал ошибку связанную с неизвестным типом) ![]() З.Ы. Если предполагать что компьютер не знает как с ними работать, тогда почему бы не писать ошибку когда я именно использую неизвестный тип, а не получаю доступ к известному классу с известном типом- и даже не к внутреннему классу этого класса(потомку)? ![]() Заранее спасибо! |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
ты бы книжку почитал сначала, хотя-бы по Си...
|
|||
|
||||
MsLive |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Что вы имеете ввиду? |
|||
|
||||
J0ker |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 986 Регистрация: 17.9.2008 Репутация: 9 Всего: 14 |
![]() Это сообщение отредактировал(а) J0ker - 6.10.2008, 19:30 |
||||
|
|||||
MsLive |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
![]() |
||||||
|
|||||||
Fazil6 |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 7 Всего: 60 |
потому что Гладиолус (стыдно этого незнать). |
|||
|
||||
Lin07 |
|
||||
Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 19.7.2008 Репутация: -1 Всего: -1 |
потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете... ![]() как он может знать что это такое ,если вы ему о обьекте не слова не говорите ![]() J0ker +1 Это сообщение отредактировал(а) Lin07 - 6.10.2008, 23:55 |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
он (компилятор) проиндексирует жесткий диск компьютера ![]() Добавлено через 42 секунды и найдет нужный заголовочный файл, где-бы он не был |
|||
|
||||
tier2 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 6.10.2008 Репутация: нет Всего: нет |
![]() |
|||
|
||||
MsLive |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Так об этом я и говорил: Если я обращаюсь к неизвестному объекту- то писать ошибку, а если не обращаюсь- не писать. Или это как-то связанно с адресом памяти в классе? И почему даже если в классе есть указатель с неопределенным типом то я тоже должен это обозначивать? |
|||
|
||||
bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Потому что компилятор не знает, что ты пытаешься сделать. Может это у тебя не тип, а объект, функция, переменная... Что делать то?!? Он не знает. Вот и ругается. Если тебе нужен указатель или ссылка на объект неизвестного типа, то ты должен сделать предопределение этого типа:
Программа во время исполнения не может ругаться на доступ к неизвестному объекту, так как во время ее работы нет понятия типа объекта. Это особенность компилируемых языков (к коим относятся Си и С++), если тебе нужны подобные свойства, то обрати внимание на интерпретируемые (BASIC, Python и пр.) |
||||
|
|||||
MsLive |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Я имею ввиду не во время работы,- а во время компиляции проекта.
Если исполняемая функция\класс\объект\структура вызывается то компилятор проверяет наличие обозначения данной переменной в исполняемом классе\файле если ее там нет(в исполняемом файле нет #include, обозначения класса: class temp_obj)- пишет ошибку. И не важно что это функция,класс- компилятор будет понимать: если он вызывает неопознанную инструкцию, он будет давать об этом отсчет (ошибка) (во время компиляции) З.ы. "Что делать то?!? Он не знает. Вот и ругается" - ругаться положено не по пустякам т.е. когда я этот объект вызываю- он дает об этом отсчет, а если не вызываю он дальше компилирует проект. |
||||
|
|||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
во время компиляции исполняемого файла еще нет, он появится только после успешной компоновки, include - директива, которая говорит компилятору, что нужно вставить текст одного файла в другой.
зы RTFM, лучше начни с основ, а то путать исходник с исполняемым файлом как-то совсем грустно... |
|||
|
||||
MsLive |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 50 Регистрация: 1.4.2008 Репутация: нет Всего: нет |
Про исполняемый файл я разве говорил? Это сообщение отредактировал(а) MsLive - 7.10.2008, 13:56 |
|||
|
||||
Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
||||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |