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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> типы перемннных 2 
:(
    Опции темы
MsLive
  Дата 6.10.2008, 18:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Здравствуйте!
Недавно возник такой вопрос:
Как мне включить класс в проект, который использует неопределенный
тип данных(и таких данных много)
например:
Код

class main_memory
{

U_graphics graphics;
................
...............
};

в другом файле
Код

class U_graphics: public D3d_misc_app
{
rdv use_device
int current_device;
.......................
...................
};

Любая попытка включить этот класс без #include не была успешной(компилятор писал ошибку связанную с неизвестным типом)  smile 
З.Ы. Если предполагать что компьютер не знает как с ними работать, тогда почему бы  не писать
ошибку когда я именно использую неизвестный тип, а не получаю доступ к известному классу с известном типом- и даже не к внутреннему классу этого класса(потомку)? smile 
Заранее спасибо!
PM MAIL   Вверх
Lazin
Дата 6.10.2008, 18:38 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



ты бы книжку почитал сначала, хотя-бы по Си...
PM MAIL Skype GTalk   Вверх
MsLive
Дата 6.10.2008, 19:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?
PM MAIL   Вверх
J0ker
Дата 6.10.2008, 19:30 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(MsLive @ 6.10.2008,  19:23)
Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?

 smile

Это сообщение отредактировал(а) J0ker - 6.10.2008, 19:30


--------------------
user posted image
PM MAIL   Вверх
MsLive
Дата 6.10.2008, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(J0ker @ 6.10.2008,  19:30)
Цитата(MsLive @ 6.10.2008,  19:23)
Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?

 smile

 smile 
PM MAIL   Вверх
Fazil6
Дата 6.10.2008, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата(MsLive @  6.10.2008,  18:19 Найти цитируемый пост)
Любая попытка включить этот класс без #include не была успешной(компилятор писал ошибку связанную с неизвестным типом)   З.Ы. Если предполагать что компьютер не знает как с ними работать, тогда почему бы  не писатьошибку когда я именно использую неизвестный тип, а не получаю доступ к известному классу с известном типом- и даже не к внутреннему классу этого класса(потомку)?  Заранее спасибо!

потому что Гладиолус (стыдно этого незнать).

PM MAIL   Вверх
Lin07
Дата 6.10.2008, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(MsLive @ 6.10.2008,  19:23)
Цитата

ты бы книжку почитал сначала, хотя-бы по Си...

Что вы имеете ввиду?

потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...  smile 

как он может знать что это такое ,если вы ему о обьекте не слова не говорите smile 

J0ker +1

Это сообщение отредактировал(а) Lin07 - 6.10.2008, 23:55
PM MAIL   Вверх
Lazin
Дата 7.10.2008, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(Lin07 @  6.10.2008,  23:54 Найти цитируемый пост)
потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...  smile 

как он может знать что это такое ,если вы ему о обьекте не слова не говорите

он (компилятор) проиндексирует жесткий диск компьютера smile

Добавлено через 42 секунды
и найдет нужный заголовочный файл, где-бы он не был 
PM MAIL Skype GTalk   Вверх
tier2
Дата 7.10.2008, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Lazin @ 7.10.2008,  07:58)
Цитата(Lin07 @  6.10.2008,  23:54 Найти цитируемый пост)
потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...  smile 

как он может знать что это такое ,если вы ему о обьекте не слова не говорите

он (компилятор) проиндексирует жесткий диск компьютера smile

Добавлено @ 07:58
и найдет нужный заголовочный файл, где-бы он не был

 smile 
PM MAIL   Вверх
MsLive
Дата 7.10.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

потому что компилятор не знает ,что за обьект ,если вы ему о нем не расскажете...   
как он может знать что это такое ,если вы ему о обьекте не слова не говорите

Так об этом я и говорил:
Если я обращаюсь к неизвестному объекту- то писать ошибку, а если не обращаюсь- не писать.
Или это как-то связанно с адресом памяти в классе?
И почему даже если в классе есть указатель с неопределенным типом то я тоже должен это обозначивать?
PM MAIL   Вверх
bsa
Дата 7.10.2008, 11:20 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

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



Цитата(MsLive @ 7.10.2008,  10:41)
И почему даже если в классе есть указатель с неопределенным типом то я тоже должен это обозначивать?

Потому что компилятор не знает, что ты пытаешься сделать. Может это у тебя не тип, а объект, функция, переменная... Что делать то?!? Он не знает. Вот и ругается.
Если тебе нужен указатель или ссылка на объект неизвестного типа, то ты должен сделать предопределение этого типа:
Код
class MyClass;
MyClass *pointer;

Программа во время исполнения не может ругаться на доступ к неизвестному объекту, так как во время ее работы нет понятия типа объекта. Это особенность компилируемых языков (к коим относятся Си и С++), если тебе нужны подобные свойства, то обрати внимание на интерпретируемые (BASIC, Python и пр.)
PM   Вверх
MsLive
Дата 7.10.2008, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Программа во время исполнения не может ругаться на доступ к неизвестному объекту, так как во время ее работы нет понятия типа объекта. Это особенность компилируемых языков (к коим относятся Си и С++), если тебе нужны подобные свойства, то обрати внимание на интерпретируемые (BASIC, Python и пр.) 

Я имею ввиду не во время работы,- а во время компиляции проекта.
Цитата

Потому что компилятор не знает, что ты пытаешься сделать. Может это у тебя не тип, а объект, функция, переменная... Что делать то?!? Он не знает. Вот и ругается.
Если тебе нужен указатель или ссылка на объект неизвестного типа, то ты должен сделать предопределение этого типа:

Если исполняемая функция\класс\объект\структура вызывается то компилятор проверяет наличие обозначения данной переменной в исполняемом классе\файле если ее там нет(в исполняемом файле нет #include, обозначения класса: class temp_obj)- пишет ошибку. И не важно что это функция,класс- компилятор будет понимать: если он вызывает неопознанную инструкцию, он будет давать об этом отсчет (ошибка) (во время компиляции)
З.ы. "Что делать то?!? Он не знает. Вот и ругается" - ругаться положено не по пустякам т.е. когда я этот объект вызываю- он дает об этом отсчет, а если не вызываю он дальше компилирует проект.

PM MAIL   Вверх
Lazin
Дата 7.10.2008, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



во время компиляции исполняемого файла еще нет, он появится только после успешной компоновки, include - директива, которая говорит компилятору, что нужно вставить текст одного файла в другой.
зы
RTFM, лучше начни с основ, а то путать исходник с исполняемым файлом как-то совсем грустно...
PM MAIL Skype GTalk   Вверх
MsLive
Дата 7.10.2008, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

путать исходник с исполняемым файлом как-то совсем грустно... 

Про исполняемый файл я разве говорил?


Это сообщение отредактировал(а) MsLive - 7.10.2008, 13:56
PM MAIL   Вверх
Lazin
Дата 7.10.2008, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(MsLive @  7.10.2008,  13:11 Найти цитируемый пост)
в исполняемом файле нет #include


Цитата(MsLive @  7.10.2008,  13:11 Найти цитируемый пост)
Если исполняемая функция\класс\объект\структура вызывается то компилятор проверяет наличие обозначения данной переменной в исполняемом классе\файле если ее там нет


говорил
PM MAIL Skype GTalk   Вверх
MsLive
Дата 7.10.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата(Lazin @ 7.10.2008,  14:32)
Цитата(MsLive @  7.10.2008,  13:11 Найти цитируемый пост)
в исполняемом файле нет #include


Цитата(MsLive @  7.10.2008,  13:11 Найти цитируемый пост)
Если исполняемая функция\класс\объект\структура вызывается то компилятор проверяет наличие обозначения данной переменной в исполняемом классе\файле если ее там нет


говорил

Значит вы меня не так поняли.
Под словом исполняемый файл я не имел ввиду .exe
PM MAIL   Вверх
EnergoHokum
Дата 7.10.2008, 14:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

Под словом исполняемый файл я не имел ввиду .exe 

Для платформы windows в общем случае исполняемым файлом является PE-файл, и расшифровывается так-же: Portable Executable. Как правило, такому файлу дают расширение exe. А ты что имел в виду?
PM MAIL ICQ   Вверх
MsLive
Дата 7.10.2008, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

Для платформы windows в общем случае исполняемым файлом является PE-файл, и расшифровывается так-же: Portable Executable. Как правило, такому файлу дают расширение exe. А ты что имел в виду?

Я имел ввиду файл(.cpp\.h)/класс который выполняет исполнение неопределенного объекта(в данном случае компилятор должен написать ошибку)
з.ы. а как всетаки .ехе расшифровывается?(название) 
PM MAIL   Вверх
Fazil6
Дата 7.10.2008, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата(MsLive @  7.10.2008,  15:00 Найти цитируемый пост)
Я имел ввиду файл(.cpp\.h)/класс который выполняет исполнение неопределенного объекта(

"Начал хорошо, не разменивайся на детали, говори главное!", "Да уж!"
PM MAIL   Вверх
Lazin
Дата 7.10.2008, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(MsLive @  7.10.2008,  15:00 Найти цитируемый пост)
Я имел ввиду файл(.cpp\.h)/класс который выполняет исполнение неопределенного объекта(в данном случае компилятор должен написать ошибку)

непонятно...

Цитата(MsLive @  7.10.2008,  15:00 Найти цитируемый пост)
з.ы. а как всетаки .ехе расшифровывается?(название)  

executable
PM MAIL Skype GTalk   Вверх
J0ker
Дата 7.10.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



патамушта C++ - язык со статической типизацией - типы существуют ТОЛЬКО на этапе компиляции, поэтому компилятору нужно знать как минимум размер объекта определенного типа если данный объект используется как мембер другого объекта
если используется указатель на объект или ссылка (являющаяся так-же указателем), то компилятору этого знать не надо, и можно объявить просто:
Код

class A;

но как только ты обращаешься к внутренностям этого объекта, то ессесна компилятору уже нужно знать всё


--------------------
user posted image
PM MAIL   Вверх
EnergoHokum
Дата 8.10.2008, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата

патамушта C++ - язык со статической типизацией

А шаблоны??? Вот насчёт чистого C -- про типизацию согласен, а плюсы мутируют в последнее время во что-то непонятное, и оч-чень толстое.
PM MAIL ICQ   Вверх
vinter
Дата 8.10.2008, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Explorer
****


Профиль
Группа: Завсегдатай
Сообщений: 2735
Регистрация: 1.4.2006
Где: Н.Новгород

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



Цитата(EnergoHokum @  8.10.2008,  09:52 Найти цитируемый пост)
А шаблоны??? 

шаблоны интсанциируются в compile-time


--------------------
Мой блог
PM MAIL WWW   Вверх
J0ker
Дата 8.10.2008, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(EnergoHokum @  8.10.2008,  08:52 Найти цитируемый пост)
А шаблоны???

шаблоны разворачиваются препроцессором - тем же самым что включает инклюды и разворачивают макросы
на этапе компиляции все типы определены

Цитата(EnergoHokum @  8.10.2008,  08:52 Найти цитируемый пост)
Вот насчёт чистого C -- про типизацию согласен, а плюсы мутируют в последнее время во что-то непонятное, и оч-чень толстое. 

у вас предубеждение  smile 

Это сообщение отредактировал(а) J0ker - 8.10.2008, 21:27


--------------------
user posted image
PM MAIL   Вверх
Lazin
Дата 8.10.2008, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



Цитата(J0ker @  8.10.2008,  21:27 Найти цитируемый пост)
шаблоны разворачиваются препроцессором - тем же самым что включает инклюды и разворачивают макросы
на этапе компиляции все типы определены

препроцессор тут совершенно непричем 
PM MAIL Skype GTalk   Вверх
J0ker
Дата 8.10.2008, 23:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Lazin @ 8.10.2008,  21:51)
Цитата(J0ker @  8.10.2008,  21:27 Найти цитируемый пост)
шаблоны разворачиваются препроцессором - тем же самым что включает инклюды и разворачивают макросы
на этапе компиляции все типы определены

препроцессор тут совершенно непричем

может быть
просто одно время работал с компилятором, который разворачивал темплейты в репозиторий и только после этого компилировал...


--------------------
user posted image
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


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

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


 




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


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

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